diff --git a/ChangeLog b/ChangeLog
index 6f646e0b25aca05c09deb94bc8cb84a74a3d3106..7c86e3a1fc428fe16acfc51c7c598402a45e2e52 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,6 +2,10 @@
 	* src/chars.c (move_mbleft): Start looking for a multibyte char
 	not at the start of the string, but only as far back as such a
 	char can possibly be.  Change suggested by Mark Majeres.
+	*  src/search.c (findnextstr): Step backward or forward not simply
+	one byte but one character (possibly multibyte).  Fixes Savannah
+	bug #42175, reported by myself, and the finding of ghosts seen in
+	https://lists.gnu.org/archive/html/nano-devel/2015-03/msg00055.html.
 
 2015-03-21  Benno Schulenberg  <bensberg@justemail.net>
 	* src/text.c (do_alt_speller): Remove some leftovers.
diff --git a/src/search.c b/src/search.c
index d0656972bc850f0c4a1996c1183fd4c5009256bd..a5233b5b8ecb5e5e7adcbd3d078327955b523c1f 100644
--- a/src/search.c
+++ b/src/search.c
@@ -286,9 +286,9 @@ bool findnextstr(
     rev_start +=
 #ifndef NANO_TINY
 	ISSET(BACKWARDS_SEARCH) ?
-	openfile->current_x - 1 :
+	((openfile->current_x == 0) ? -1 : move_mbleft(fileptr->data, openfile->current_x)) :
 #endif
-	openfile->current_x + 1;
+	move_mbright(fileptr->data, openfile->current_x);
 
     /* Look for needle in the current line we're searching. */
     enable_nodelay();