diff --git a/src/fold.c b/src/fold.c
index a186bef..826ad5c 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -1760,6 +1760,7 @@
     int		line_len;
     char_u	*newline;
     char_u	*p = (char_u *)strstr((char *)curbuf->b_p_cms, "%s");
+    int		line_is_comment = FALSE;
 
     /* Allocate a new line: old-line + 'cms'-start + marker + 'cms'-end */
     line = ml_get(lnum);
@@ -1767,11 +1768,16 @@
 
     if (u_save(lnum - 1, lnum + 1) == OK)
     {
+#if defined(FEAT_COMMENTS)
+	/* Check if the line ends with an unclosed comment */
+	(void)skip_comment(line, FALSE, FALSE, &line_is_comment);
+#endif
 	newline = alloc((unsigned)(line_len + markerlen + STRLEN(cms) + 1));
 	if (newline == NULL)
 	    return;
 	STRCPY(newline, line);
-	if (p == NULL)
+	/* Append the marker to the end of the line */
+	if (p == NULL || line_is_comment)
 	    vim_strncpy(newline + line_len, marker, markerlen);
 	else
 	{
diff --git a/src/ops.c b/src/ops.c
index 053aeca..d3e97f0 100644
--- a/src/ops.c
+++ b/src/ops.c
@@ -113,9 +113,6 @@
 static void	may_set_selection(void);
 #endif
 static void	dis_msg(char_u *p, int skip_esc);
-#if defined(FEAT_COMMENTS) || defined(PROTO)
-static char_u	*skip_comment(char_u *line, int process, int include_space, int *is_comment);
-#endif
 static void	block_prep(oparg_T *oap, struct block_def *, linenr_T, int);
 static int	do_addsub(int op_type, pos_T *pos, int length, linenr_T Prenum1);
 #if defined(FEAT_CLIPBOARD) || defined(FEAT_EVAL)
@@ -4301,7 +4298,7 @@
  * is_comment - will indicate whether the current line ends with an unclosed
  *		comment.
  */
-    static char_u *
+    char_u *
 skip_comment(
     char_u   *line,
     int      process,
diff --git a/src/proto/ops.pro b/src/proto/ops.pro
index ef044e7..0740dda 100644
--- a/src/proto/ops.pro
+++ b/src/proto/ops.pro
@@ -38,6 +38,7 @@
 int preprocs_left(void);
 int get_register_name(int num);
 void ex_display(exarg_T *eap);
+char_u *skip_comment(char_u *line, int process, int include_space, int *is_comment);
 int do_join(long count, int insert_space, int save_undo, int use_formatoptions, int setmark);
 void op_format(oparg_T *oap, int keep_cursor);
 void op_formatexpr(oparg_T *oap);
diff --git a/src/testdir/test_fold.vim b/src/testdir/test_fold.vim
index 3c27f4f..f10480b 100644
--- a/src/testdir/test_fold.vim
+++ b/src/testdir/test_fold.vim
@@ -168,6 +168,22 @@
   bwipe!
 endfunc
 
+func Test_folds_marker_in_comment()
+  new
+  call setline(1, ['" foo', 'bar', 'baz'])
+  setl fen fdm=marker
+  setl com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\" cms=\"%s
+  norm! zf2j
+  setl nofen
+  :1y
+  call assert_equal(['" foo{{{'], getreg(0,1,1))
+  :+2y
+  call assert_equal(['baz"}}}'], getreg(0,1,1))
+
+  set foldmethod&
+  bwipe!
+endfunc
+
 func s:TestFoldExpr(lnum)
   let thisline = getline(a:lnum)
   if thisline == 'a'
diff --git a/src/version.c b/src/version.c
index 1574f9c..28c9294 100644
--- a/src/version.c
+++ b/src/version.c
@@ -765,6 +765,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    453,
+/**/
     452,
 /**/
     451,
