diff --git a/src/search.c b/src/search.c
index 1fa52b4..dd5519e 100644
--- a/src/search.c
+++ b/src/search.c
@@ -26,7 +26,7 @@
 #ifdef FEAT_VIMINFO
 static void wvsp_one(FILE *fp, int idx, char *s, int sc);
 #endif
-static void search_stat(int dirc, pos_T *pos, char_u  *msgbuf);
+static void search_stat(int dirc, pos_T *pos, int show_top_bot_msg, char_u  *msgbuf);
 
 /*
  * This file contains various searching-related routines. These fall into
@@ -1294,6 +1294,8 @@
      */
     for (;;)
     {
+	int	show_top_bot_msg = FALSE;
+
 	searchstr = pat;
 	dircp = NULL;
 					    /* use previous pattern */
@@ -1524,7 +1526,7 @@
 	if (!shortmess(SHM_SEARCH)
 		&& ((dirc == '/' && LT_POS(pos, curwin->w_cursor))
 			    || (dirc == '?' && LT_POS(curwin->w_cursor, pos))))
-	    ui_delay(500L, FALSE);  // leave some time for top_bot_msg
+	    show_top_bot_msg = TRUE;
 
 	if (c == FAIL)
 	{
@@ -1581,7 +1583,7 @@
 		&& c != FAIL
 		&& !shortmess(SHM_SEARCHCOUNT)
 		&& msgbuf != NULL)
-	    search_stat(dirc, &pos, msgbuf);
+	    search_stat(dirc, &pos, show_top_bot_msg, msgbuf);
 
 	/*
 	 * The search command can be followed by a ';' to do another search.
@@ -4911,6 +4913,7 @@
 search_stat(
     int	    dirc,
     pos_T   *pos,
+    int	    show_top_bot_msg,
     char_u  *msgbuf)
 {
     int		    save_ws = p_ws;
@@ -4979,8 +4982,9 @@
     }
     if (cur > 0)
     {
-#define STAT_BUF_LEN 10
+#define STAT_BUF_LEN 12
 	char	t[STAT_BUF_LEN] = "";
+	int	len;
 
 #ifdef FEAT_RIGHTLEFT
 	if (curwin->w_p_rl && *curwin->w_p_rlc == 's')
@@ -5006,7 +5010,15 @@
 	    else
 		vim_snprintf(t, STAT_BUF_LEN, "[%d/%d]", cur, cnt);
 	}
-	mch_memmove(msgbuf + STRLEN(msgbuf) - STRLEN(t), t, STRLEN(t));
+
+	len = STRLEN(t);
+	if (show_top_bot_msg && len + 3 < STAT_BUF_LEN)
+	{
+	    STRCPY(t + len, " W");
+	    len += 2;
+	}
+
+	mch_memmove(msgbuf + STRLEN(msgbuf) - len, t, len);
 	if (dirc == '?' && cur == 100)
 	    cur = -1;
 
diff --git a/src/testdir/test_search_stat.vim b/src/testdir/test_search_stat.vim
index 37e2fda..57dad81 100644
--- a/src/testdir/test_search_stat.vim
+++ b/src/testdir/test_search_stat.vim
@@ -3,6 +3,8 @@
 " This test is fragile, it might not work interactively, but it works when run
 " as test!
 
+source shared.vim
+
 func! Test_search_stat()
   new
   set shortmess-=S
@@ -79,7 +81,7 @@
     set norl
   endif
 
-  " 9) normal, back at top
+  " 9) normal, back at bottom
   call cursor(1,1)
   let @/ = 'foobar'
   let pat = '?foobar\s\+'
@@ -87,6 +89,7 @@
   let stat = '\[20/20\]'
   call assert_match(pat .. stat, g:a)
   call assert_match('search hit TOP, continuing at BOTTOM', g:a)
+  call assert_match('\[20/20\] W', Screenline(&lines))
 
   " 10) normal, no match
   call cursor(1,1)
diff --git a/src/version.c b/src/version.c
index 90b6904..892d1a5 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1283,
+/**/
     1282,
 /**/
     1281,
