diff --git a/src/drawline.c b/src/drawline.c
index 3811060..2b15f9a 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1449,9 +1449,6 @@
 	area_highlighting = TRUE;
 #endif
 
-    line = ml_get_buf(wp->w_buffer, lnum, FALSE);
-    ptr = line;
-
 #ifdef FEAT_SPELL
     if (spv->spv_has_spell && !number_only)
     {
@@ -1462,28 +1459,36 @@
 	// current line is valid.
 	if (lnum == spv->spv_checked_lnum)
 	    cur_checked_col = spv->spv_checked_col;
-	if (lnum != spv->spv_capcol_lnum)
+	// Previous line was not spell checked, check for capital. This happens
+	// for the first line in an updated region or after a closed fold.
+	if (spv->spv_capcol_lnum == 0 && check_need_cap(wp, lnum, 0))
+	    spv->spv_cap_col = 0;
+	else if (lnum != spv->spv_capcol_lnum)
 	    spv->spv_cap_col = -1;
 	spv->spv_checked_lnum = 0;
 
-	// For checking first word with a capital skip white space.
-	if (spv->spv_cap_col == 0)
-	    spv->spv_cap_col = getwhitecols(line);
-	// If current line is empty, check first word in next line for capital.
-	else if (*skipwhite(line) == NUL)
-	{
-	    spv->spv_cap_col = 0;
-	    spv->spv_capcol_lnum = lnum + 1;
-	}
-
-
 	// Get the start of the next line, so that words that wrap to the
 	// next line are found too: "et<line-break>al.".
 	// Trick: skip a few chars for C/shell/Vim comments
 	nextline[SPWORDLEN] = NUL;
 	if (lnum < wp->w_buffer->b_ml.ml_line_count)
-	    spell_cat_line(nextline + SPWORDLEN,
-			ml_get_buf(wp->w_buffer, lnum + 1, FALSE), SPWORDLEN);
+	{
+	    line = ml_get_buf(wp->w_buffer, lnum + 1, FALSE);
+	    spell_cat_line(nextline + SPWORDLEN, line, SPWORDLEN);
+	}
+	line = ml_get_buf(wp->w_buffer, lnum, FALSE);
+
+	// If current line is empty, check first word in next line for capital.
+	ptr = skipwhite(line);
+	if (*ptr == NUL)
+	{
+	    spv->spv_cap_col = 0;
+	    spv->spv_capcol_lnum = lnum + 1;
+	}
+	// For checking first word with a capital skip white space.
+	else if (spv->spv_cap_col == 0)
+	    spv->spv_cap_col = ptr - line;
+
 	// Copy the end of the current line into nextline[].
 	if (nextline[SPWORDLEN] == NUL)
 	{
@@ -1514,6 +1519,9 @@
     }
 #endif
 
+    line = ml_get_buf(wp->w_buffer, lnum, FALSE);
+    ptr = line;
+
     if (wp->w_p_list)
     {
 	if (wp->w_lcs_chars.space
diff --git a/src/drawscreen.c b/src/drawscreen.c
index 9676f1b..86fec15 100644
--- a/src/drawscreen.c
+++ b/src/drawscreen.c
@@ -2197,12 +2197,10 @@
 #ifdef FEAT_SPELL
     // Initialize spell related variables for the first drawn line.
     CLEAR_FIELD(spv);
-    spv.spv_has_spell = spell_check_window(wp);
-    if (spv.spv_has_spell)
+    if (spell_check_window(wp))
     {
+	spv.spv_has_spell = TRUE;
 	spv.spv_unchanged = mod_top == 0;
-	spv.spv_capcol_lnum = mod_top ? mod_top : lnum;
-	spv.spv_cap_col = check_need_cap(wp, spv.spv_capcol_lnum, 0) ? 0 : - 1;
     }
 #endif
 
@@ -2464,19 +2462,13 @@
 		fold_line(wp, fold_count, &win_foldinfo, lnum, row);
 		++row;
 		--fold_count;
-		linenr_T lnume = lnum + fold_count;
 		wp->w_lines[idx].wl_folded = TRUE;
-		wp->w_lines[idx].wl_lastlnum = lnume;
+		wp->w_lines[idx].wl_lastlnum = lnum + fold_count;
 # ifdef FEAT_SYN_HL
 		did_update = DID_FOLD;
 # endif
 # ifdef FEAT_SPELL
-		// Check if the line after this fold requires a capital.
-		if (spv.spv_has_spell && check_need_cap(wp, lnume + 1, 0))
-		{
-		    spv.spv_cap_col = 0;
-		    spv.spv_capcol_lnum = lnume + 1;
-		}
+		spv.spv_capcol_lnum = 0;
 # endif
 	    }
 	    else
@@ -2572,6 +2564,9 @@
 #ifdef FEAT_SYN_HL
 	    did_update = DID_NONE;
 #endif
+#ifdef FEAT_SPELL
+	    spv.spv_capcol_lnum = 0;
+#endif
 	}
 
 	if (lnum > buf->b_ml.ml_line_count)
diff --git a/src/testdir/dumps/Test_spell_10.dump b/src/testdir/dumps/Test_spell_10.dump
new file mode 100644
index 0000000..ce18847
--- /dev/null
+++ b/src/testdir/dumps/Test_spell_10.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0&#5fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5
+|a+0&#5fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e| @50
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |N|o|t|-@57
+> +0#0000000#ffffff0@74
+@75
+|a+0&#5fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65
+|~+0#4040ff13&| @73
+| +0#0000000&@56|5|,|0|-|1| @8|A|l@1| 
diff --git a/src/testdir/dumps/Test_spell_9.dump b/src/testdir/dumps/Test_spell_9.dump
new file mode 100644
index 0000000..9d283ce
--- /dev/null
+++ b/src/testdir/dumps/Test_spell_9.dump
@@ -0,0 +1,8 @@
+| +0&#ffffff0@2|T|h|i|s| |l|i|n|e| |h|a|s| |a| |s+0&#ffd7d7255|e|p|l@1| +0&#ffffff0|e|r@1|o|r|.| |a+0&#5fd7ff255|n|d| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p|s| |a|n|d| |t|r|a|i|l|i|n|g| |s|p|a|c|e|s|.| @5
+|a+0&#5fd7ff255|n|o|t|h|e|r| +0&#ffffff0|m|i|s@1|i|n|g| |c|a|p| |h|e|r|e| @50
+|++0#0000e05#a8a8a8255|-@1| @1|2| |l|i|n|e|s|:| |N|o|t|-@57
+> +0#0000000#ffffff0@74
+|a+0&#5fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65
+|~+0#4040ff13&| @73
+|~| @73
+| +0#0000000&@56|5|,|0|-|1| @8|A|l@1| 
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 350077a..a42d4c7 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -958,6 +958,7 @@
   CheckScreendump
 
   let lines =<< trim END
+       call test_override('alloc_lines', 1)
        call setline(1, [
              \ "This is some text without any spell errors.  Everything",
              \ "should just be black, nothing wrong here.",
@@ -980,6 +981,7 @@
   CheckScreendump
 
   let lines =<< trim END
+       call test_override('alloc_lines', 1)
        call setline(1, [
              \ "   This line has a sepll error. and missing caps and trailing spaces.   ",
              \ "another missing cap here.",
@@ -1019,6 +1021,14 @@
   call term_sendkeys(buf, "\<C-E>\<C-L>")
   call VerifyScreenDump(buf, 'Test_spell_8', {})
 
+  " Adding an empty line does not remove Cap in "mod_bot" area
+  call term_sendkeys(buf, "zbO\<Esc>")
+  call VerifyScreenDump(buf, 'Test_spell_9', {})
+
+  " Multiple empty lines does not remove Cap in the line after
+  call term_sendkeys(buf, "O\<Esc>\<C-L>")
+  call VerifyScreenDump(buf, 'Test_spell_10', {})
+
   " clean up
   call StopVimInTerminal(buf)
 endfunc
@@ -1027,6 +1037,7 @@
   CheckScreendump
 
   let lines =<< trim END
+       call test_override('alloc_lines', 1)
        call setline(1, [
              \ "test "->repeat(20),
              \ "",
diff --git a/src/version.c b/src/version.c
index e4dc511..4b04193 100644
--- a/src/version.c
+++ b/src/version.c
@@ -696,6 +696,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1595,
+/**/
     1594,
 /**/
     1593,
