diff --git a/src/edit.c b/src/edit.c
index aafd226..78b4d1c 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -6320,14 +6320,15 @@
 	    if (!(flags & INSCHAR_COM_LIST))
 	    {
 		/*
-		 * This section is for numeric lists w/o comments.  If comment
-		 * indents are needed with numeric lists (formatoptions=nq),
-		 * then the INSCHAR_COM_LIST flag will cause the corresponding
-		 * OPENLINE_COM_LIST flag to be passed through to open_line()
-		 * (as seen above)...
+		 * This section is for auto-wrap of numeric lists.  When not
+		 * in insert mode (i.e. format_lines()), the INSCHAR_COM_LIST
+		 * flag will be set and open_line() will handle it (as seen
+		 * above).  The code here (and in get_number_indent()) will
+		 * recognize comments if needed...
 		 */
 		if (second_indent < 0 && has_format_option(FO_Q_NUMBER))
-		    second_indent = get_number_indent(curwin->w_cursor.lnum -1);
+		    second_indent =
+				 get_number_indent(curwin->w_cursor.lnum - 1);
 		if (second_indent >= 0)
 		{
 #ifdef FEAT_VREPLACE
@@ -6336,7 +6337,31 @@
 							    FALSE, NUL, TRUE);
 		    else
 #endif
+#ifdef FEAT_COMMENTS
+			if (leader_len > 0 && second_indent - leader_len > 0)
+		    {
+			int i;
+			int padding = second_indent - leader_len;
+
+			/* We started at the first_line of a numbered list
+			 * that has a comment.  the open_line() function has
+			 * inserted the proper comment leader and positioned
+			 * the cursor at the end of the split line.  Now we
+			 * add the additional whitespace needed after the
+			 * comment leader for the numbered list.  */
+			for (i = 0; i < padding; i++)
+			{
+			    ins_str((char_u *)" ");
+			    changed_bytes(curwin->w_cursor.lnum, leader_len);
+			}
+		    }
+		    else
+		    {
+#endif
 			(void)set_indent(second_indent, SIN_CHANGED);
+#ifdef FEAT_COMMENTS
+		    }
+#endif
 		}
 	    }
 	    first_line = FALSE;
diff --git a/src/misc1.c b/src/misc1.c
index a84b3c3..99881dc 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -424,68 +424,35 @@
     colnr_T	col;
     pos_T	pos;
 
+    regmatch_T	regmatch;
+    int		lead_len = 0;	/* length of comment leader */
+
     if (lnum > curbuf->b_ml.ml_line_count)
 	return -1;
     pos.lnum = 0;
 
 #ifdef FEAT_COMMENTS
-    if (has_format_option(FO_Q_COMS) && has_format_option(FO_Q_NUMBER))
-    {
-	regmatch_T  regmatch;
-	int	    lead_len;	      /* length of comment leader */
-
+    /* In format_lines() (i.e. not insert mode), fo+=q is needed too...  */
+    if ((State & INSERT) || has_format_option(FO_Q_COMS))
 	lead_len = get_leader_len(ml_get(lnum), NULL, FALSE, TRUE);
-	regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
-	if (regmatch.regprog != NULL)
-	{
-	    regmatch.rm_ic = FALSE;
-
-	    /* vim_regexec() expects a pointer to a line.  This lets us
-	     * start matching for the flp beyond any comment leader...  */
-	    if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
-	    {
-		pos.lnum = lnum;
-		pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum));
-#ifdef FEAT_VIRTUALEDIT
-		pos.coladd = 0;
 #endif
-	    }
-	}
-	vim_free(regmatch.regprog);
-    }
-    else
+    regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
+    if (regmatch.regprog != NULL)
     {
-	/*
-	 * What follows is the orig code that is not "comment aware"...
-	 *
-	 * I'm not sure if regmmatch_T (multi-match) is needed in this case.
-	 * It may be true that this section would work properly using the
-	 * regmatch_T code above, in which case, these two separate sections
-	 * should be consolidated w/ FEAT_COMMENTS making lead_len > 0...
-	 */
-#endif
-	regmmatch_T  regmatch;
+	regmatch.rm_ic = FALSE;
 
-	regmatch.regprog = vim_regcomp(curbuf->b_p_flp, RE_MAGIC);
-
-	if (regmatch.regprog != NULL)
+	/* vim_regexec() expects a pointer to a line.  This lets us
+	 * start matching for the flp beyond any comment leader...  */
+	if (vim_regexec(&regmatch, ml_get(lnum) + lead_len, (colnr_T)0))
 	{
-	    regmatch.rmm_ic = FALSE;
-	    regmatch.rmm_maxcol = 0;
-	    if (vim_regexec_multi(&regmatch, curwin, curbuf,
-						      lnum, (colnr_T)0, NULL))
-	    {
-		pos.lnum = regmatch.endpos[0].lnum + lnum;
-		pos.col = regmatch.endpos[0].col;
+	    pos.lnum = lnum;
+	    pos.col = (colnr_T)(*regmatch.endp - ml_get(lnum));
 #ifdef FEAT_VIRTUALEDIT
-		pos.coladd = 0;
+	    pos.coladd = 0;
 #endif
-	    }
-	    vim_free(regmatch.regprog);
 	}
-#ifdef FEAT_COMMENTS
     }
-#endif
+    vim_free(regmatch.regprog);
 
     if (pos.lnum == 0 || *ml_get_pos(&pos) == NUL)
 	return -1;
diff --git a/src/testdir/test68.in b/src/testdir/test68.in
index 068d6a0..fcfc68c 100644
--- a/src/testdir/test68.in
+++ b/src/testdir/test68.in
@@ -52,6 +52,17 @@
 
 STARTTEST
 /^{/+1
+:set tw=5 fo=tcn comments=:#
+A bjA b
+ENDTEST
+
+{
+  1 a
+# 1 a
+}
+
+STARTTEST
+/^{/+1
 :set tw=5 fo=qn comments=:#
 gwap
 ENDTEST
@@ -83,6 +94,14 @@
 }
 
 STARTTEST
+/^#/
+:setl tw=12 fo=tqnc comments=:#
+A foobar
+ENDTEST
+
+# 1 xxxxx
+
+STARTTEST
 :g/^STARTTEST/.,/^ENDTEST/d
 :1;/^Results/,$wq! test.out
 ENDTEST
diff --git a/src/version.c b/src/version.c
index 33f03e0..646d223 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    576,
+/**/
     575,
 /**/
     574,
