diff --git a/ChangeLog b/ChangeLog
index 80f4bbe39bd2f4fba51d77870fe64aa764217054..281fb9d20f05b9a847cf0327340bed085a86b4d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2010-01-04 Chris Allegretta <chrisa@asty.org>
+	* winio.c: edit_update, edit_redraw - Fix search not scrolling to the middle of the screen
+	  (reported by alpha@qzx.com) and places where we rely on maxrows but should not.
+
 2009-12-26 Jordi Mallach <jordi@gnu.org>
 	* doc/man/nano.1: Avoid a groff warning by prepending a zero-width
 	space to a line starting with '.
diff --git a/src/winio.c b/src/winio.c
index 6b5e6e1671c62e4e28aaffa4337f84082e443630..eb18ed8bbd813521c1c7a71aa88005bc14f9a1ef 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -2935,7 +2935,7 @@ bool need_vertical_update(size_t pww_save)
 }
 
 /* When edittop changes, try and figure out how many lines
- * we really have to work with (i.e. set maxrows) 
+ * we really have to work with (i.e. set maxrows)
  */
 void compute_maxrows(void)
 {
@@ -3160,7 +3160,7 @@ void edit_redraw(filestruct *old_current, size_t pww_save)
 	/* Put edittop in range of current, get the difference in lines
 	 * between the original edittop and the current edittop, and
 	 * then restore the original edittop. */
-	edit_update(NONE);
+	edit_update(CENTER);
 
 	nlines = openfile->edittop->lineno - old_edittop->lineno;
 
@@ -3239,7 +3239,7 @@ void edit_refresh(void)
 
 	/* Put the top line of the edit window in range of the current
 	 * line. */
-	edit_update(NONE);
+	edit_update(CENTER);
     }
 
     foo = openfile->edittop;
@@ -3279,13 +3279,13 @@ void edit_update(update_type location)
      * screen as before, or at the top or bottom of the screen if
      * edittop is beyond either. */
     if (location == CENTER)
-	goal = maxrows / 2;
+	goal = editwinrows / 2;
     else {
 	goal = openfile->current_y;
 
 	/* Limit goal to (editwinrows - 1) lines maximum. */
-	if (goal > maxrows - 1)
-	    goal = maxrows - 1;
+	if (goal > editwinrows - 1)
+	    goal = editwinrows - 1;
     }
 
     for (; goal > 0 && foo->prev != NULL; goal--) {