diff --git a/src/eval.c b/src/eval.c
index a0877f6..8115c7c 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -5056,12 +5056,14 @@
 /*
  * Convert the specified byte index of line 'lnum' in buffer 'buf' to a
  * character index.  Works only for loaded buffers. Returns -1 on failure.
- * The index of the first character is one.
+ * The index of the first byte and the first character is zero.
  */
     int
 buf_byteidx_to_charidx(buf_T *buf, int lnum, int byteidx)
 {
     char_u	*str;
+    char_u	*t;
+    int		count;
 
     if (buf == NULL || buf->b_ml.ml_mfp == NULL)
 	return -1;
@@ -5074,15 +5076,26 @@
 	return -1;
 
     if (*str == NUL)
-	return 1;
+	return 0;
 
-    return mb_charlen_len(str, byteidx + 1);
+    // count the number of characters
+    t = str;
+    for (count = 0; *t != NUL && t <= str + byteidx; count++)
+	t += mb_ptr2len(t);
+
+    // In insert mode, when the cursor is at the end of a non-empty line,
+    // byteidx points to the NUL character immediately past the end of the
+    // string. In this case, add one to the character count.
+    if (*t == NUL && byteidx != 0 && t == str + byteidx)
+	count++;
+
+    return count - 1;
 }
 
 /*
  * Convert the specified character index of line 'lnum' in buffer 'buf' to a
- * byte index.  Works only for loaded buffers. Returns -1 on failure. The index
- * of the first byte and the first character is one.
+ * byte index.  Works only for loaded buffers. Returns -1 on failure.
+ * The index of the first byte and the first character is zero.
  */
     int
 buf_charidx_to_byteidx(buf_T *buf, int lnum, int charidx)
@@ -5105,7 +5118,7 @@
     while (*t != NUL && --charidx > 0)
 	t += mb_ptr2len(t);
 
-    return t - str + 1;
+    return t - str;
 }
 
 /*
@@ -5180,7 +5193,7 @@
     {
 	pos = curwin->w_cursor;
 	if (charcol)
-	    pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col) - 1;
+	    pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col);
 	return &pos;
     }
     if (name[0] == 'v' && name[1] == NUL)	// Visual start
@@ -5190,7 +5203,7 @@
 	else
 	    pos = curwin->w_cursor;
 	if (charcol)
-	    pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col) - 1;
+	    pos.col = buf_byteidx_to_charidx(curbuf, pos.lnum, pos.col);
 	return &pos;
     }
     if (name[0] == '\'')			// mark
@@ -5199,7 +5212,7 @@
 	if (pp == NULL || pp == (pos_T *)-1 || pp->lnum <= 0)
 	    return NULL;
 	if (charcol)
-	    pp->col = buf_byteidx_to_charidx(curbuf, pp->lnum, pp->col) - 1;
+	    pp->col = buf_byteidx_to_charidx(curbuf, pp->lnum, pp->col);
 	return pp;
     }
 
@@ -5300,7 +5313,7 @@
 	if (buf == NULL || buf->b_ml.ml_mfp == NULL)
 	    return FAIL;
 
-	n = buf_charidx_to_byteidx(buf, posp->lnum, n);
+	n = buf_charidx_to_byteidx(buf, posp->lnum, n) + 1;
     }
     posp->col = n;
 
diff --git a/src/evalfunc.c b/src/evalfunc.c
index d3ef15e..59fa2b1 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -2748,7 +2748,7 @@
 	    semsg(_(e_invarg2), tv_get_string(&argvars[0]));
 	col = (long)tv_get_number_chk(&argvars[1], NULL);
 	if (charcol)
-	    col = buf_charidx_to_byteidx(curbuf, line, col);
+	    col = buf_charidx_to_byteidx(curbuf, line, col) + 1;
 	if (argvars[2].v_type != VAR_UNKNOWN)
 	    coladd = (long)tv_get_number_chk(&argvars[2], NULL);
     }
@@ -4011,8 +4011,8 @@
 	    if (fp != NULL && charcol)
 	    {
 		pos = *fp;
-		pos.col = buf_byteidx_to_charidx(wp->w_buffer, pos.lnum,
-								pos.col) - 1;
+		pos.col =
+		    buf_byteidx_to_charidx(wp->w_buffer, pos.lnum, pos.col);
 		fp = &pos;
 	    }
 	}
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index 19b3416..c09c683 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -123,11 +123,18 @@
   bwipe!
 endfunc
 
+" Save the visual start character position
 func SaveVisualStartCharPos()
   call add(g:VisualStartPos, getcharpos('v'))
   return ''
 endfunc
 
+" Save the current cursor character position in insert mode
+func SaveInsertCurrentCharPos()
+  call add(g:InsertCurrentPos, getcharpos('.'))
+  return ''
+endfunc
+
 " Test for the getcharpos() function
 func Test_getcharpos()
   call assert_fails('call getcharpos({})', 'E731:')
@@ -156,16 +163,29 @@
   vnoremap <expr> <F3> SaveVisualStartCharPos()
   let g:VisualStartPos = []
   exe "normal 2G6lv$\<F3>ohh\<F3>o\<F3>"
-  call assert_equal([[0, 2, 7, 0], [0, 2, 9, 0], [0, 2, 5, 0]], g:VisualStartPos)
+  call assert_equal([[0, 2, 7, 0], [0, 2, 10, 0], [0, 2, 5, 0]], g:VisualStartPos)
   call assert_equal([0, 2, 9, 0], getcharpos('v'))
   let g:VisualStartPos = []
   exe "normal 3Gv$\<F3>o\<F3>"
-  call assert_equal([[0, 3, 1, 0], [0, 3, 1, 0]], g:VisualStartPos)
+  call assert_equal([[0, 3, 1, 0], [0, 3, 2, 0]], g:VisualStartPos)
   let g:VisualStartPos = []
   exe "normal 1Gv$\<F3>o\<F3>"
   call assert_equal([[0, 1, 1, 0], [0, 1, 1, 0]], g:VisualStartPos)
   vunmap <F3>
 
+  " Test for getting the position in insert mode with the cursor after the
+  " last character in a line
+  inoremap <expr> <F3> SaveInsertCurrentCharPos()
+  let g:InsertCurrentPos = []
+  exe "normal 1GA\<F3>"
+  exe "normal 2GA\<F3>"
+  exe "normal 3GA\<F3>"
+  exe "normal 4GA\<F3>"
+  exe "normal 2G6li\<F3>"
+  call assert_equal([[0, 1, 1, 0], [0, 2, 10, 0], [0, 3, 2, 0], [0, 4, 10, 0],
+                        \ [0, 2, 7, 0]], g:InsertCurrentPos)
+  iunmap <F3>
+
   %bw!
 endfunc
 
@@ -192,6 +212,10 @@
   call setcharpos("'m", [0, 2, 9, 0])
   normal `m
   call assert_equal([2, 11], [line('.'), col('.')])
+  " unload the buffer and try to set the mark
+  let bnr = bufnr()
+  enew!
+  call assert_equal(-1, setcharpos("'m", [bnr, 2, 2, 0]))
 
   %bw!
   call assert_equal(-1, setcharpos('.', [10, 3, 1, 0]))
@@ -202,6 +226,11 @@
   return ''
 endfunc
 
+func SaveInsertCurrentCharCol()
+  call add(g:InsertCurrentCol, charcol('.'))
+  return ''
+endfunc
+
 " Test for the charcol() function
 func Test_charcol()
   call assert_fails('call charcol({})', 'E731:')
@@ -239,19 +268,36 @@
   vnoremap <expr> <F3> SaveVisualStartCharCol()
   let g:VisualStartCol = []
   exe "normal 2G6lv$\<F3>ohh\<F3>o\<F3>"
-  call assert_equal([7, 9, 5], g:VisualStartCol)
+  call assert_equal([7, 10, 5], g:VisualStartCol)
   call assert_equal(9, charcol('v'))
   let g:VisualStartCol = []
   exe "normal 3Gv$\<F3>o\<F3>"
-  call assert_equal([1, 1], g:VisualStartCol)
+  call assert_equal([1, 2], g:VisualStartCol)
   let g:VisualStartCol = []
   exe "normal 1Gv$\<F3>o\<F3>"
   call assert_equal([1, 1], g:VisualStartCol)
   vunmap <F3>
 
+  " Test for getting the column number in insert mode with the cursor after
+  " the last character in a line
+  inoremap <expr> <F3> SaveInsertCurrentCharCol()
+  let g:InsertCurrentCol = []
+  exe "normal 1GA\<F3>"
+  exe "normal 2GA\<F3>"
+  exe "normal 3GA\<F3>"
+  exe "normal 4GA\<F3>"
+  exe "normal 2G6li\<F3>"
+  call assert_equal([1, 10, 2, 10, 7], g:InsertCurrentCol)
+  iunmap <F3>
+
   %bw!
 endfunc
 
+func SaveInsertCursorCharPos()
+  call add(g:InsertCursorPos, getcursorcharpos('.'))
+  return ''
+endfunc
+
 " Test for getcursorcharpos()
 func Test_getcursorcharpos()
   call assert_equal(getcursorcharpos(), getcursorcharpos(0))
@@ -269,6 +315,19 @@
   normal 4G9l
   call assert_equal([0, 4, 9, 0, 9], getcursorcharpos())
 
+  " Test for getting the cursor position in insert mode with the cursor after
+  " the last character in a line
+  inoremap <expr> <F3> SaveInsertCursorCharPos()
+  let g:InsertCursorPos = []
+  exe "normal 1GA\<F3>"
+  exe "normal 2GA\<F3>"
+  exe "normal 3GA\<F3>"
+  exe "normal 4GA\<F3>"
+  exe "normal 2G6li\<F3>"
+  call assert_equal([[0, 1, 1, 0, 1], [0, 2, 10, 0, 15], [0, 3, 2, 0, 2],
+                    \ [0, 4, 10, 0, 10], [0, 2, 7, 0, 12]], g:InsertCursorPos)
+  iunmap <F3>
+
   let winid = win_getid()
   normal 2G5l
   wincmd w
diff --git a/src/version.c b/src/version.c
index 78b805f..aae7bf5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2342,
+/**/
     2341,
 /**/
     2340,
