diff --git a/ChangeLog b/ChangeLog
index 1942c631a86ef92c5ad7000e57dedb15798f69a4..df3e34f6b1de980251f8cc61163324d3f57807df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2007-04-22  David Lawrence Ramsey  <pooka109@gmail.com>
+
+	* text.c (backup_lines): Avoid a segfault when the mark begins
+	and ends on the line after the last line of the paragraph.
+
 2007-04-21  David Lawrence Ramsey  <pooka109@gmail.com>
 
 	* files.c (do_writeout): If we're in restricted mode, we're not
diff --git a/src/text.c b/src/text.c
index 5746d3b6bf0038f8b5bb3c58d02247886af4f5a3..58219fe0172680929108658ca7a4250bf39bc32f 100644
--- a/src/text.c
+++ b/src/text.c
@@ -1212,9 +1212,16 @@ void backup_lines(filestruct *first_line, size_t par_len)
      * line, putting first_line, edittop, current, and mark_begin at the
      * same lines in the copied paragraph that they had in the original
      * paragraph. */
-    if (openfile->current != openfile->fileage)
+    if (openfile->current != openfile->fileage) {
 	top = openfile->current->prev;
-    else
+#ifndef NANO_TINY
+	if (old_mark_set &&
+		openfile->current->lineno == mb_lineno_save) {
+	    openfile->mark_begin = openfile->current;
+	    openfile->mark_begin_x = mark_begin_x_save;
+	}
+#endif
+    } else
 	top = openfile->current;
     for (i = par_len; i > 0 && top != NULL; i--) {
 	if (top->lineno == fl_lineno_save)