diff --git a/src/move.c b/src/move.c
index 85159a1f2bf17736c162e240331ef768df2c41d3..60fe572193724155c000b21b2db47d52d4aca73a 100644
--- a/src/move.c
+++ b/src/move.c
@@ -582,8 +582,11 @@ void do_left(void)
 	openfile->current_x = move_mbleft(openfile->current->data,
 						openfile->current_x);
     else if (openfile->current != openfile->fileage) {
-	do_up_void();
-	do_end(FALSE);
+	openfile->current = openfile->current->prev;
+	openfile->current_x = strlen(openfile->current->data);
+
+	focusing = FALSE;
+	edit_redraw(openfile->current->next);
 	return;
     }
 
@@ -619,8 +622,11 @@ void do_right(void)
 	openfile->current_x = move_mbright(openfile->current->data,
 						openfile->current_x);
     else if (openfile->current != openfile->filebot) {
-	do_home(FALSE);
-	do_down_void();
+	openfile->current = openfile->current->next;
+	openfile->current_x = 0;
+
+	focusing = FALSE;
+	edit_redraw(openfile->current->prev);
 	return;
     }