diff --git a/ChangeLog b/ChangeLog
index ea28c312bfff7292fadc72dd31d680889fc08de9..8fabe8e3af45eb46b68a13854693dff057283351 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -76,6 +76,9 @@ CVS code -
   do_browser()
 	- Call check_statblank() instead of blanking the statusbar
 	  unconditionally, for consistency. (David Benbennick)
+- move.c:
+  do_first_line(), do_last_line()
+	- Move these functions here from winio.c. (DLR)
 - nano.c:
   do_toggle(), finish()
 	- Call blank_statusbar() and blank_bottombars() to blank out
diff --git a/src/move.c b/src/move.c
index bdc666c8853636295c3af90fa915853eb2546ac2..ac1e7a7aad962b0c7c28a38e61b8ecad15008343 100644
--- a/src/move.c
+++ b/src/move.c
@@ -28,6 +28,24 @@
 #include "proto.h"
 #include "nano.h"
 
+int do_first_line(void)
+{
+    current = fileage;
+    placewewant = 0;
+    current_x = 0;
+    edit_update(current, TOP);
+    return 1;
+}
+
+int do_last_line(void)
+{
+    current = filebot;
+    placewewant = 0;
+    current_x = 0;
+    edit_update(current, CENTER);
+    return 1;
+}
+
 int do_home(void)
 {
 #ifndef NANO_SMALL
diff --git a/src/proto.h b/src/proto.h
index becfc7e28cbf99cb9605bc303e7be0155a89b15a..c31e67bd734f8aaf2fd5223d55289d5e4032bf83 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -233,6 +233,8 @@ void thanks_for_all_the_fish(void);
 #endif
 
 /* Public functions in move.c */
+int do_first_line(void);
+int do_last_line(void);
 int do_home(void);
 int do_end(void);
 int do_page_up(void);
@@ -478,8 +480,6 @@ int get_escape_seq_abcd(int kbinput);
 #ifndef DISABLE_MOUSE
 int get_mouseinput(int *mouse_x, int *mouse_y, int shortcut);
 #endif
-int do_first_line(void);
-int do_last_line(void);
 size_t xplustabs(void);
 size_t actual_x(const char *str, size_t xplus);
 size_t strnlenpt(const char *buf, size_t size);
diff --git a/src/winio.c b/src/winio.c
index da01845279e52191507c046be46dda9ec8b572ad..359abfecdb6f39cff5ef3b325130fe4f0fc6452e 100644
--- a/src/winio.c
+++ b/src/winio.c
@@ -1013,24 +1013,6 @@ int get_mouseinput(int *mouse_x, int *mouse_y, int allow_shortcuts)
 }
 #endif
 
-int do_first_line(void)
-{
-    current = fileage;
-    placewewant = 0;
-    current_x = 0;
-    edit_update(current, TOP);
-    return 1;
-}
-
-int do_last_line(void)
-{
-    current = filebot;
-    placewewant = 0;
-    current_x = 0;
-    edit_update(current, CENTER);
-    return 1;
-}
-
 /* Return the placewewant associated with current_x.  That is, xplustabs
  * is the zero-based column position of the cursor.  Value is no smaller
  * than current_x. */