diff --git a/src/getchar.c b/src/getchar.c
index d9b55c0..c8fad14 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -242,6 +242,22 @@
 }
 
 /*
+ * Delete "slen" bytes from the end of "buf".
+ * Only works when it was just added.
+ */
+    static void
+delete_buff_tail(buffheader_T *buf, int slen)
+{
+    int len = (int)STRLEN(buf->bh_curr->b_str);
+
+    if (len >= slen)
+    {
+	buf->bh_curr->b_str[len - slen] = NUL;
+	buf->bh_space += slen;
+    }
+}
+
+/*
  * Add number "n" to buffer "buf".
  */
     static void
@@ -1100,12 +1116,13 @@
  * Can be used for a character obtained by vgetc() that needs to be put back.
  * Uses cmd_silent, KeyTyped and KeyNoremap to restore the flags belonging to
  * the char.
+ * Returns the length of what was inserted.
  */
-    void
+    int
 ins_char_typebuf(int c, int modifier)
 {
     char_u	buf[MB_MAXBYTES + 4];
-    int		idx = 0;
+    int		len = 0;
 
     if (modifier != 0)
     {
@@ -1113,19 +1130,23 @@
 	buf[1] = KS_MODIFIER;
 	buf[2] = modifier;
 	buf[3] = NUL;
-	idx = 3;
+	len = 3;
     }
     if (IS_SPECIAL(c))
     {
-	buf[idx] = K_SPECIAL;
-	buf[idx + 1] = K_SECOND(c);
-	buf[idx + 2] = K_THIRD(c);
-	buf[idx + 3] = NUL;
-	idx += 3;
+	buf[len] = K_SPECIAL;
+	buf[len + 1] = K_SECOND(c);
+	buf[len + 2] = K_THIRD(c);
+	buf[len + 3] = NUL;
+	len += 3;
     }
     else
-	buf[(*mb_char2bytes)(c, buf + idx) + idx] = NUL;
+    {
+	len += (*mb_char2bytes)(c, buf + len);
+	buf[len] = NUL;
+    }
     (void)ins_typebuf(buf, KeyNoremap, 0, !KeyTyped, cmd_silent);
+    return len;
 }
 
 /*
@@ -1302,6 +1323,22 @@
 }
 
 /*
+ * Undo the last gotchars() for "len" bytes.  To be used when putting a typed
+ * character back into the typeahead buffer, thus gotchars() will be called
+ * again.
+ * Only affects recorded characters.
+ */
+    void
+ungetchars(int len)
+{
+    if (reg_recording != 0)
+    {
+	delete_buff_tail(&recordbuff, len);
+	last_recorded_len -= len;
+    }
+}
+
+/*
  * Sync undo.  Called when typed characters are obtained from the typeahead
  * buffer, or when a menu is used.
  * Do not sync:
diff --git a/src/normal.c b/src/normal.c
index cd9b0a9..553ed24 100644
--- a/src/normal.c
+++ b/src/normal.c
@@ -592,12 +592,19 @@
 	    && VIsual_select
 	    && (vim_isprintc(c) || c == NL || c == CAR || c == K_KENTER))
     {
+	int len;
+
 	// Fake a "c"hange command.  When "restart_edit" is set (e.g., because
 	// 'insertmode' is set) fake a "d"elete command, Insert mode will
 	// restart automatically.
 	// Insert the typed character in the typeahead buffer, so that it can
 	// be mapped in Insert mode.  Required for ":lmap" to work.
-	ins_char_typebuf(vgetc_char, vgetc_mod_mask);
+	len = ins_char_typebuf(vgetc_char, vgetc_mod_mask);
+
+	// When recording the character will be recorded again, remove the
+	// previously recording.
+	ungetchars(len);
+
 	if (restart_edit != 0)
 	    c = 'd';
 	else
diff --git a/src/proto/getchar.pro b/src/proto/getchar.pro
index 0b357a2..9745ddf 100644
--- a/src/proto/getchar.pro
+++ b/src/proto/getchar.pro
@@ -24,11 +24,12 @@
 void stop_redo_ins(void);
 int noremap_keys(void);
 int ins_typebuf(char_u *str, int noremap, int offset, int nottyped, int silent);
-void ins_char_typebuf(int c, int modifier);
+int ins_char_typebuf(int c, int modifier);
 int typebuf_changed(int tb_change_cnt);
 int typebuf_typed(void);
 int typebuf_maplen(void);
 void del_typebuf(int len, int offset);
+void ungetchars(int len);
 int save_typebuf(void);
 void save_typeahead(tasave_T *tp);
 void restore_typeahead(tasave_T *tp, int overwrite);
diff --git a/src/testdir/test_registers.vim b/src/testdir/test_registers.vim
index e4285e6..bbc7c19 100644
--- a/src/testdir/test_registers.vim
+++ b/src/testdir/test_registers.vim
@@ -197,6 +197,17 @@
   endif
 endfunc
 
+func Test_recording_with_select_mode()
+  new
+  call feedkeys("qacc12345\<Esc>gH98765\<Esc>q", "tx")
+  call assert_equal("98765", getline(1))
+  call assert_equal("cc12345\<Esc>gH98765\<Esc>", @a)
+  call setline(1, 'asdf')
+  normal! @a
+  call assert_equal("98765", getline(1))
+  bwipe!
+endfunc
+
 " Test for executing the last used register (@)
 func Test_last_used_exec_reg()
   " Test for the @: command
diff --git a/src/version.c b/src/version.c
index 7ec033c..b7bc986 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    3993,
+/**/
     3992,
 /**/
     3991,
