diff --git a/src/search.c b/src/search.c
index c119716..9470073 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4599,7 +4599,7 @@
 
 #endif /* FEAT_TEXTOBJ */
 
-static int is_one_char(char_u *pattern, int move);
+static int is_one_char(char_u *pattern, int move, pos_T *cur);
 
 /*
  * Find next search match under cursor, cursor at end.
@@ -4647,7 +4647,7 @@
 	orig_pos = pos = curwin->w_cursor;
 
     /* Is the pattern is zero-width? */
-    one_char = is_one_char(spats[last_idx].pat, TRUE);
+    one_char = is_one_char(spats[last_idx].pat, TRUE, &curwin->w_cursor);
     if (one_char == -1)
     {
 	p_ws = old_p_ws;
@@ -4710,7 +4710,10 @@
 
     /* Check again from the current cursor position,
      * since the next match might actually by only one char wide */
-    one_char = is_one_char(spats[last_idx].pat, FALSE);
+    one_char = is_one_char(spats[last_idx].pat, FALSE, &pos);
+    if (one_char < 0)
+	/* search failed, abort */
+	return FAIL;
 
     /* move to match, except for zero-width matches, in which case, we are
      * already on the next match */
@@ -4761,12 +4764,12 @@
 
 /*
  * Check if the pattern is one character long or zero-width.
- * If move is TRUE, check from the beginning of the buffer, else from the
- * current cursor position.
+ * If move is TRUE, check from the beginning of the buffer, else from position
+ * "cur".
  * Returns TRUE, FALSE or -1 for failure.
  */
     static int
-is_one_char(char_u *pattern, int move)
+is_one_char(char_u *pattern, int move, pos_T *cur)
 {
     regmmatch_T	regmatch;
     int		nmatched = 0;
@@ -4791,7 +4794,7 @@
     }
     else
     {
-	pos = curwin->w_cursor;
+	pos = *cur;
 	/* accept a match at the cursor position */
 	flag = SEARCH_START;
     }
diff --git a/src/testdir/test_gn.vim b/src/testdir/test_gn.vim
index 7a5cdab..b2a2937 100644
--- a/src/testdir/test_gn.vim
+++ b/src/testdir/test_gn.vim
@@ -1,43 +1,50 @@
 " Test for gn command
 
 func Test_gn_command()
-  noa new
+  set belloff=all
+  noautocmd new
   " replace a single char by itsself quoted:
   call setline('.', 'abc x def x ghi x jkl')
   let @/='x'
   exe "norm! cgn'x'\<esc>.."
   call assert_equal("abc 'x' def 'x' ghi 'x' jkl", getline('.'))
   sil! %d_
+
   " simple search match
   call setline('.', 'foobar')
   let @/='foobar'
   exe "norm! gncsearchmatch"
   call assert_equal('searchmatch', getline('.'))
   sil! %d _
+
   " replace a multi-line match
   call setline('.', ['', 'one', 'two'])
   let @/='one\_s*two\_s'
   exe "norm! gnceins\<CR>zwei"
   call assert_equal(['','eins','zwei'], getline(1,'$'))
   sil! %d _
+
   " test count argument
   call setline('.', ['', 'abcdx | abcdx | abcdx'])
   let @/='[a]bcdx'
   exe "norm! 2gnd"
   call assert_equal(['','abcdx |  | abcdx'], getline(1,'$'))
   sil! %d _
+
   " join lines
   call setline('.', ['join ', 'lines'])
   let @/='$'
   exe "norm! 0gnd"
   call assert_equal(['join lines'], getline(1,'$'))
   sil! %d _
+
   " zero-width match
   call setline('.', ['', 'zero width pattern'])
   let @/='\>\zs'
   exe "norm! 0gnd"
   call assert_equal(['', 'zerowidth pattern'], getline(1,'$'))
   sil! %d _
+
   " delete first and last chars
   call setline('.', ['delete first and last chars'])
   let @/='^'
@@ -46,23 +53,27 @@
   exe "norm! gnd"
   call assert_equal(['elete first and last char'], getline(1,'$'))
   sil! %d _
+
   " using visual mode
   call setline('.', ['', 'uniquepattern uniquepattern'])
   exe "norm! /[u]niquepattern/s\<cr>vlgnd"
   call assert_equal(['', ' uniquepattern'], getline(1,'$'))
   sil! %d _
+
   " backwards search
   call setline('.', ['my very excellent mother just served us nachos'])
   let @/='mother'
   exe "norm! $cgNmongoose"
   call assert_equal(['my very excellent mongoose just served us nachos'], getline(1,'$'))
   sil! %d _
+
   " search for single char
   call setline('.', ['','for (i=0; i<=10; i++)'])
   let @/='i'
   exe "norm! cgnj"
   call assert_equal(['','for (j=0; i<=10; i++)'], getline(1,'$'))
   sil! %d _
+
   " search hex char
   call setline('.', ['','Y'])
   set noignorecase
@@ -70,24 +81,38 @@
   exe "norm! gnd"
   call assert_equal(['',''], getline(1,'$'))
   sil! %d _
+
   " test repeating gdn
   call setline('.', ['', '1', 'Johnny', '2', 'Johnny', '3'])
   let @/='Johnny'
   exe "norm! dgn."
   call assert_equal(['','1', '', '2', '', '3'], getline(1,'$'))
   sil! %d _
+
   " test repeating gUgn
   call setline('.', ['', '1', 'Depp', '2', 'Depp', '3'])
   let @/='Depp'
   exe "norm! gUgn."
   call assert_equal(['', '1', 'DEPP', '2', 'DEPP', '3'], getline(1,'$'))
   sil! %d _
+
   " test using look-ahead assertions
   call setline('.', ['a:10', '', 'a:1', '', 'a:20'])
   let @/='a:0\@!\zs\d\+'
   exe "norm! 2nygno\<esc>p"
   call assert_equal(['a:10', '', 'a:1', '1', '', 'a:20'], getline(1,'$'))
   sil! %d _
+
+  " test using nowrapscan
+  set nowrapscan
+  call setline(1, 'foo bar baz')
+  exe "norm! /bar/e\<cr>"
+  exe "norm! gnd"
+  call assert_equal(['foo  baz'], getline(1,'$'))
+  sil! %d_
+
+  set wrapscan&vim
+  set belloff&vim
 endfu
 
 " vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index 65dc83f..7a9b21c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    627,
+/**/
     626,
 /**/
     625,
