updated for version 7.3.853
Problem:    Using "ra" in multiple lines on multi-byte characters leaves a few
            characters not replaced.
Solution:   Adjust the end column only in the last line. (Yasuhiro Matsumoto)
diff --git a/src/ops.c b/src/ops.c
index f3588eb..f3a26da 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -2194,7 +2194,8 @@
 		{
 		    /* This is slow, but it handles replacing a single-byte
 		     * with a multi-byte and the other way around. */
-		    oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
+		    if (curwin->w_cursor.lnum == oap->end.lnum)
+			oap->end.col += (*mb_char2len)(c) - (*mb_char2len)(n);
 		    n = State;
 		    State = REPLACE;
 		    ins_char(c);