diff --git a/src/getchar.c b/src/getchar.c
index e6879c6..2b1bbde 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -2699,17 +2699,19 @@
 	 * - and not an ESC sequence, not in insert mode or p_ek is on,
 	 * - and when not timed out,
 	 */
-	if ((no_mapping == 0 || allow_keys != 0)
-		&& (typebuf.tb_maplen == 0
+	if (no_mapping == 0 || allow_keys != 0)
+	{
+	    if ((typebuf.tb_maplen == 0
 		    || (p_remap && typebuf.tb_noremap[
 						    typebuf.tb_off] == RM_YES))
 		&& !*timedout)
-	{
-	    keylen = check_termcode(max_mlen + 1, NULL, 0, NULL);
+		keylen = check_termcode(max_mlen + 1, NULL, 0, NULL);
+	    else
+		keylen = 0;
 
 	    // If no termcode matched but 'pastetoggle' matched partially
 	    // it's like an incomplete key sequence.
-	    if (keylen == 0 && save_keylen == KEYLEN_PART_KEY)
+	    if (keylen == 0 && save_keylen == KEYLEN_PART_KEY && !*timedout)
 		keylen = KEYLEN_PART_KEY;
 
 	    // If no termcode matched, try to include the modifier into the
diff --git a/src/testdir/test_paste.vim b/src/testdir/test_paste.vim
index a59e128..17ac9e4 100644
--- a/src/testdir/test_paste.vim
+++ b/src/testdir/test_paste.vim
@@ -2,6 +2,7 @@
 
 " Bracketed paste only works with "xterm".  Not in GUI or Windows console.
 source check.vim
+source term_util.vim
 CheckNotMSWindows
 CheckNotGui
 
@@ -217,6 +218,69 @@
   bwipe!
 endfunc
 
+func Test_pastetoggle_timeout_no_typed_after_mapped()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    set pastetoggle=abc
+    set ttimeoutlen=10000
+    imap d a
+  END
+  call writefile(lines, 'Xpastetoggle_no_typed_after_mapped.vim')
+  let buf = RunVimInTerminal('-S Xpastetoggle_no_typed_after_mapped.vim', #{rows: 8})
+  call TermWait(buf)
+  call term_sendkeys(buf, ":call feedkeys('id', 't')\<CR>")
+  call term_wait(buf, 200)
+  call term_sendkeys(buf, 'bc')
+  " 'ttimeoutlen' should NOT apply
+  call WaitForAssert({-> assert_match('^-- INSERT --', term_getline(buf, 8))})
+
+  call StopVimInTerminal(buf)
+  call delete('Xpastetoggle_no_typed_after_mapped.vim')
+endfunc
+
+func Test_pastetoggle_timeout_typed_after_mapped()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    set pastetoggle=abc
+    set ttimeoutlen=10000
+    imap d a
+  END
+  call writefile(lines, 'Xpastetoggle_typed_after_mapped.vim')
+  let buf = RunVimInTerminal('-S Xpastetoggle_typed_after_mapped.vim', #{rows: 8})
+  call TermWait(buf)
+  call term_sendkeys(buf, ":call feedkeys('idb', 't')\<CR>")
+  call term_wait(buf, 200)
+  call term_sendkeys(buf, 'c')
+  " 'ttimeoutlen' should apply
+  call WaitForAssert({-> assert_match('^-- INSERT (paste) --', term_getline(buf, 8))})
+
+  call StopVimInTerminal(buf)
+  call delete('Xpastetoggle_typed_after_mapped.vim')
+endfunc
+
+func Test_pastetoggle_timeout_typed_after_noremap()
+  CheckRunVimInTerminal
+
+  let lines =<< trim END
+    set pastetoggle=abc
+    set ttimeoutlen=10000
+    inoremap d a
+  END
+  call writefile(lines, 'Xpastetoggle_typed_after_noremap.vim')
+  let buf = RunVimInTerminal('-S Xpastetoggle_typed_after_noremap.vim', #{rows: 8})
+  call TermWait(buf)
+  call term_sendkeys(buf, ":call feedkeys('idb', 't')\<CR>")
+  call term_wait(buf, 200)
+  call term_sendkeys(buf, 'c')
+  " 'ttimeoutlen' should apply
+  call WaitForAssert({-> assert_match('^-- INSERT (paste) --', term_getline(buf, 8))})
+
+  call StopVimInTerminal(buf)
+  call delete('Xpastetoggle_typed_after_noremap.vim')
+endfunc
+
 " Test for restoring option values when 'paste' is disabled
 func Test_paste_opt_restore()
   set autoindent expandtab ruler showmatch
diff --git a/src/testdir/test_termcodes.vim b/src/testdir/test_termcodes.vim
index c9b0c7b..87c0474 100644
--- a/src/testdir/test_termcodes.vim
+++ b/src/testdir/test_termcodes.vim
@@ -2444,5 +2444,21 @@
   bw!
 endfunc
 
+func Test_simplify_noremap()
+  call feedkeys("i\<*C-M>", 'nx')
+  call assert_equal('', getline(1))
+  call assert_equal([0, 2, 1, 0, 1], getcurpos())
+  bw!
+endfunc
+
+func Test_simplify_timedout()
+  inoremap <C-M>a b
+  call feedkeys("i\<*C-M>", 'xt')
+  call assert_equal('', getline(1))
+  call assert_equal([0, 2, 1, 0, 1], getcurpos())
+  iunmap <C-M>a
+  bw!
+endfunc
+
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 53afc37..2fa8992 100644
--- a/src/version.c
+++ b/src/version.c
@@ -747,6 +747,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    4837,
+/**/
     4836,
 /**/
     4835,
