diff --git a/src/search.c b/src/search.c
index e221098..3276a77 100644
--- a/src/search.c
+++ b/src/search.c
@@ -4441,12 +4441,11 @@
 
 #endif /* FEAT_TEXTOBJ */
 
-static int is_one_char __ARGS((char_u *pattern));
+static int is_one_char __ARGS((char_u *pattern, int move));
 
 /*
  * Find next search match under cursor, cursor at end.
  * Used while an operator is pending, and in Visual mode.
- * TODO: redo only works when used in operator pending mode
  */
     int
 current_search(count, forward)
@@ -4491,7 +4490,7 @@
 	orig_pos = pos = start_pos = curwin->w_cursor;
 
     /* Is the pattern is zero-width? */
-    one_char = is_one_char(spats[last_idx].pat);
+    one_char = is_one_char(spats[last_idx].pat, TRUE);
     if (one_char == -1)
     {
 	p_ws = old_p_ws;
@@ -4550,6 +4549,10 @@
     start_pos = pos;
     flags = forward ? SEARCH_END : 0;
 
+    /* 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);
+
     /* move to match, except for zero-width matches, in which case, we are
      * already on the next match */
     if (!one_char)
@@ -4599,26 +4602,38 @@
 
 /*
  * Check if the pattern is one character or zero-width.
+ * If move is TRUE, check from the beginning of the buffer, else from the
+ * current cursor position.
  * Returns TRUE, FALSE or -1 for failure.
  */
     static int
-is_one_char(pattern)
+is_one_char(pattern, move)
     char_u	*pattern;
+    int		move;
 {
     regmmatch_T	regmatch;
     int		nmatched = 0;
     int		result = -1;
     pos_T	pos;
     int		save_called_emsg = called_emsg;
+    int		flag = 0;
 
     if (search_regcomp(pattern, RE_SEARCH, RE_SEARCH,
 					      SEARCH_KEEP, &regmatch) == FAIL)
 	return -1;
 
     /* move to match */
-    clearpos(&pos);
+    if (move)
+	clearpos(&pos)
+    else
+    {
+	pos = curwin->w_cursor;
+	/* accept a match at the cursor position */
+	flag = SEARCH_START;
+    }
+
     if (searchit(curwin, curbuf, &pos, FORWARD, spats[last_idx].pat, 1,
-				     SEARCH_KEEP, RE_SEARCH, 0, NULL) != FAIL)
+			      SEARCH_KEEP + flag, RE_SEARCH, 0, NULL) != FAIL)
     {
 	/* Zero-width pattern should match somewhere, then we can check if
 	 * start and end are in the same position. */
diff --git a/src/testdir/test53.in b/src/testdir/test53.in
index 011c9ae..8ca9c9e 100644
--- a/src/testdir/test53.in
+++ b/src/testdir/test53.in
@@ -79,6 +79,8 @@
 :" test repeating gUgn
 /^Depp
 gggUgn.
+gg/a:0\@!\zs\d\+
+nygnop
 :/^start:/,/^end:/wq! test.out
 ENDTEST
 
@@ -108,6 +110,11 @@
 uniquepattern uniquepattern
 my very excellent mother just served us nachos
 for (i=0; i<=10; i++)
+a:10
+
+a:1
+
+a:20
 Y
 text
 Y
diff --git a/src/testdir/test53.ok b/src/testdir/test53.ok
index d7ffa6b..0c0b9de 100644
--- a/src/testdir/test53.ok
+++ b/src/testdir/test53.ok
@@ -49,6 +49,12 @@
  uniquepattern
 my very excellent mongoose just served us nachos
 for (j=0; i<=10; i++)
+a:10
+
+a:1
+1
+
+a:20
 
 text
 Y
diff --git a/src/version.c b/src/version.c
index 32fb731..6408d57 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    551,
+/**/
     550,
 /**/
     549,
