diff --git a/runtime/ftplugin/changelog.vim b/runtime/ftplugin/changelog.vim
index dafcbe2..ee83c79 100644
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:         generic Changelog file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2011-05-02
+" Latest Revision:  2012-08-23
 " Variables:
 "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
 "       description: the timeformat used in ChangeLog entries.
@@ -106,10 +106,10 @@
 
   function! s:passwd_field(line, field)
     let fields = split(a:line, ':', 1)
-    if len(fields) < field
+    if len(fields) < a:field
       return ""
     endif
-    return fields[field - 1]
+    return fields[a:field - 1]
   endfunction
 
   function! s:capitalize(word)
diff --git a/runtime/ftplugin/zimbu.vim b/runtime/ftplugin/zimbu.vim
index 85b57f4..ff28120 100644
--- a/runtime/ftplugin/zimbu.vim
+++ b/runtime/ftplugin/zimbu.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:	Zimbu
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2012 May 18
+" Last Change:	2012 Sep 08
 
 " Only do this when not done yet for this buffer
 if exists("b:did_ftplugin")
@@ -34,7 +34,7 @@
 
 " When the matchit plugin is loaded, this makes the % command skip parens and
 " braces in comments.
-let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=}\|\<UNTIL\>'
+let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=\(}\|\<UNTIL\>\)'
 
 let b:match_skip = 's:comment\|string\|zimbuchar'
 
@@ -43,12 +43,36 @@
 
 " Does replace when a dot, space or closing brace is typed.
 func! GCUpperDot(what)
-  let col = col(".") - strlen(a:what)
-  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != '.' && v:char != ')' && v:char != '}'
+  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != '.' && v:char != ')' && v:char != '}' && v:char != ','
     " no space or dot after the typed text
     let g:got_char = v:char
     return a:what
   endif
+  return GCUpperCommon(a:what)
+endfunc
+
+" Does not replace when a dot is typed.
+func! GCUpper(what)
+  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != ')' && v:char != ','
+    " no space or other "terminating" character after the typed text
+    let g:got_char = v:char
+    return a:what
+  endif
+  return GCUpperCommon(a:what)
+endfunc
+
+" Only replaces when a space is typed.
+func! GCUpperSpace(what)
+  if v:char != ' '
+    " no space after the typed text
+    let g:got_char = v:char
+    return a:what
+  endif
+  return GCUpperCommon(a:what)
+endfunc
+
+func! GCUpperCommon(what)
+  let col = col(".") - strlen(a:what)
   if col > 1 && getline('.')[col - 2] != ' '
     " no space before the typed text
     let g:got_char = 999
@@ -64,34 +88,15 @@
   return toupper(a:what)
 endfunc
 
-" Does not replace when a dot is typed.
-func! GCUpper(what)
-  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != ')'
-    " no space after the typed text
-    let g:got_char = v:char
-    return a:what
-  endif
-  return GCUpperDot(a:what)
-endfunc
-
-" Only replaces when a space is typed.
-func! GCUpperSpace(what)
-  if v:char != ' '
-    " no space after the typed text
-    let g:got_char = v:char
-    return a:what
-  endif
-  return GCUpperDot(a:what)
-endfunc
-
 iabbr <buffer> <expr> alias GCUpperSpace("alias")
 iabbr <buffer> <expr> arg GCUpperDot("arg")
-iabbr <buffer> <expr> bad GCUpper("bad")
 iabbr <buffer> <expr> break GCUpper("break")
 iabbr <buffer> <expr> case GCUpperSpace("case")
 iabbr <buffer> <expr> catch GCUpperSpace("catch")
 iabbr <buffer> <expr> check GCUpperDot("check")
 iabbr <buffer> <expr> class GCUpperSpace("class")
+iabbr <buffer> <expr> interface GCUpperSpace("interface")
+iabbr <buffer> <expr> implements GCUpperSpace("implements")
 iabbr <buffer> <expr> shared GCUpperSpace("shared")
 iabbr <buffer> <expr> continue GCUpper("continue")
 iabbr <buffer> <expr> default GCUpper("default")
