diff --git a/src/nano.c b/src/nano.c
index c67a396cfb06e63f13f2ca737aa906db0f4f325d..4ecbddc7b2bfa0b6ed329f6ff69c64d170a8c4b8 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -2865,14 +2865,16 @@ bool find_paragraph(size_t *const quote, size_t *const par)
 
     /* Find the first line of the current or next paragraph.  First, if
      * the current line isn't in a paragraph, move forward to the line
-     * after the end of the next paragraph.  If the line before that
-     * isn't in a paragraph, it means there aren't any paragraphs left,
-     * so get out.  Otherwise, if the current line is in a paragraph and
-     * it isn't the first line of that paragraph, move back to the first
-     * line. */
+     * after the end of the next paragraph.  If we end up on the same
+     * line, or the line before that isn't in a paragraph, it means that
+     * there aren't any paragraphs left, so get out.  Otherwise, if the
+     * current line is in a paragraph and it isn't the first line of
+     * that paragraph, move back to the first line. */
     if (!inpar(current)) {
+	filestruct *current_save = current;
+
 	do_para_end(FALSE);
-	if (!inpar(current->prev))
+	if (current == current_save || !inpar(current->prev))
 	    return FALSE;
     }
     if (!begpar(current))