diff --git a/src/move.c b/src/move.c
index ba68a7114a71937ae1cd12f38d5d7deaede360e8..ff479cfcaf1e9c073150ad479bc2e83c864d5d77 100644
--- a/src/move.c
+++ b/src/move.c
@@ -413,12 +413,12 @@ void do_end(bool be_clever)
 
 #ifndef NANO_TINY
     if (ISSET(SOFTWRAP)) {
-	bool last_chunk;
+	bool last_chunk = FALSE;
 	size_t leftedge = get_chunk_leftedge(openfile->current, was_column);
 	size_t rightedge = get_softwrap_breakpoint(openfile->current->data,
-							leftedge,
-							&last_chunk);
+						leftedge, &last_chunk);
 	size_t rightedge_x;
+
 	/* If we're on the last chunk, we're already at the end of the line.
 	 * Otherwise, we're one column past the end of the line.  Shifting
 	 * backwards one column might put us in the middle of a multi-column
diff --git a/src/winio.c b/src/winio.c
index 414c30ce144fefe6a6cb691d21c80b7ae28130c8..7071d670abdb0b519774395b69b52ec2a5add1ce 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2766,15 +2766,14 @@ int update_softwrapped_line(filestruct *fileptr)
     starting_row = row;
 
     while (row < editwinrows) {
-	bool end_of_line;
+	bool end_of_line = FALSE;
 
 	to_col = get_softwrap_breakpoint(fileptr->data, from_col, &end_of_line);
 
 	blank_row(edit, row, 0, COLS);
 
 	/* Convert the chunk to its displayable form and draw it. */
-	converted = display_string(fileptr->data, from_col, to_col - from_col,
-					TRUE);
+	converted = display_string(fileptr->data, from_col, to_col - from_col, TRUE);
 	edit_draw(fileptr, converted, row++, from_col);
 	free(converted);
 
@@ -2869,11 +2868,10 @@ int go_forward_chunks(int nrows, filestruct **line, size_t *leftedge)
 	/* Advance through the requested number of chunks. */
 	for (i = nrows; i > 0; i--) {
 	    if (current_leftedge < last_leftedge) {
-		bool end_of_line;
+		bool dummy;
 
 		current_leftedge = get_softwrap_breakpoint((*line)->data,
-							current_leftedge,
-							&end_of_line);
+						current_leftedge, &dummy);
 		continue;
 	    }
 
@@ -3011,8 +3009,6 @@ size_t get_softwrap_breakpoint(const char *text, size_t leftedge,
     int char_len = 0;
 	/* Length of current character, in bytes. */
 
-    *end_of_line = FALSE;
-
     while (*text != '\0' && column < leftedge)
 	text += parse_mbchar(text, NULL, &column);
 
@@ -3092,7 +3088,7 @@ size_t actual_last_column(size_t leftedge, size_t column)
 size_t get_chunk(filestruct *line, size_t column, size_t *leftedge)
 {
     size_t current_chunk = 0, start_col = 0, end_col;
-    bool end_of_line;
+    bool end_of_line = FALSE;
 
     while (TRUE) {
 	end_col = get_softwrap_breakpoint(line->data, start_col, &end_of_line);
@@ -3433,6 +3429,8 @@ void spotlight(bool active, size_t from_col, size_t to_col)
     char *word;
     size_t word_span, room;
 
+    place_the_cursor(FALSE);
+
 #ifndef NANO_TINY
     if (ISSET(SOFTWRAP)) {
 	spotlight_softwrapped(active, from_col, to_col);
@@ -3440,8 +3438,6 @@ void spotlight(bool active, size_t from_col, size_t to_col)
     }
 #endif
 
-    place_the_cursor(FALSE);
-
     /* This is so we can show zero-length matches. */
     if (to_col == from_col) {
 	word = mallocstrcpy(NULL, " ");
@@ -3481,16 +3477,12 @@ void spotlight(bool active, size_t from_col, size_t to_col)
  * line breaks, since they're not actually part of the spotlighted text. */
 void spotlight_softwrapped(bool active, size_t from_col, size_t to_col)
 {
-    ssize_t row;
+    ssize_t row = openfile->current_y;
     size_t leftedge = get_chunk_leftedge(openfile->current, from_col);
     size_t break_col;
-    bool end_of_line;
+    bool end_of_line = FALSE;
     char *word;
 
-    place_the_cursor(FALSE);
-
-    row = openfile->current_y;
-
     while (row < editwinrows) {
 	break_col = get_softwrap_breakpoint(openfile->current->data,
 						leftedge, &end_of_line);
@@ -3523,9 +3515,7 @@ void spotlight_softwrapped(bool active, size_t from_col, size_t to_col)
 	if (end_of_line)
 	    break;
 
-	row++;
-
-	wmove(edit, row, 0);
+	wmove(edit, ++row, 0);
 
 	leftedge = break_col;
 	from_col = break_col;