diff --git a/src/drawline.c b/src/drawline.c
index 7e18ced..5413347 100644
--- a/src/drawline.c
+++ b/src/drawline.c
@@ -1125,10 +1125,7 @@
 #endif
 
 #ifdef FEAT_SPELL
-	if (wp->w_p_spell
-		&& *wp->w_s->b_p_spl != NUL
-		&& wp->w_s->b_langp.ga_len > 0
-		&& *(char **)(wp->w_s->b_langp.ga_data) != NULL)
+	if (spell_check_window(wp))
 	{
 	    // Prepare for spell checking.
 	    has_spell = TRUE;
diff --git a/src/edit.c b/src/edit.c
index 0b78964..ec3e8ff 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -3587,6 +3587,13 @@
 
 #ifdef FEAT_SPELL
     check_spell_redraw();
+
+    // When text has been changed in this line, possibly the start of the next
+    // line may have SpellCap that should be removed or it needs to be
+    // displayed.  Schedule the next line for redrawing just in case.
+    if (spell_check_window(curwin)
+			 && curwin->w_cursor.lnum < curbuf->b_ml.ml_line_count)
+	redrawWinline(curwin, curwin->w_cursor.lnum + 1);
 #endif
 
     temp = curwin->w_cursor.col;
diff --git a/src/proto/spell.pro b/src/proto/spell.pro
index 4a3e85b..55c8482 100644
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -5,6 +5,7 @@
 int match_compoundrule(slang_T *slang, char_u *compflags);
 int valid_word_prefix(int totprefcnt, int arridx, int flags, char_u *word, slang_T *slang, int cond_req);
 int spell_valid_case(int wordflags, int treeflags);
+int spell_check_window(win_T *wp);
 int spell_move_to(win_T *wp, int dir, int allwords, int curline, hlf_T *attrp);
 void spell_cat_line(char_u *buf, char_u *line, int maxlen);
 char_u *spell_enc(void);
diff --git a/src/spell.c b/src/spell.c
index 08f627d..628814f 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -1238,18 +1238,27 @@
 }
 
 /*
- * Return TRUE if spell checking is not enabled.
+ * Return TRUE if spell checking is enabled for "wp".
+ */
+    int
+spell_check_window(win_T *wp)
+{
+    return wp->w_p_spell
+		&& *wp->w_s->b_p_spl != NUL
+		&& wp->w_s->b_langp.ga_len > 0
+		&& *(char **)(wp->w_s->b_langp.ga_data) != NULL;
+}
+
+/*
+ * Return TRUE and give an error if spell checking is not enabled.
  */
     static int
 no_spell_checking(win_T *wp)
 {
-    if (!wp->w_p_spell || *wp->w_s->b_p_spl == NUL
-					 || wp->w_s->b_langp.ga_len == 0)
-    {
-	emsg(_(e_spell_checking_is_not_possible));
-	return TRUE;
-    }
-    return FALSE;
+    if (spell_check_window(wp))
+	return FALSE;
+    emsg(_(e_spell_checking_is_not_possible));
+    return TRUE;
 }
 
 /*
diff --git a/src/testdir/dumps/Test_spell_3.dump b/src/testdir/dumps/Test_spell_3.dump
new file mode 100644
index 0000000..8dcd045
--- /dev/null
+++ b/src/testdir/dumps/Test_spell_3.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|.| @49
+|N|o>t| @71
+|a|n|d| |h|e|r|e|.| @65
+@75
+|a+0&#5fd7ff255|n|d| +0&#ffffff0|h|e|r|e|.| @65
+|~+0#4040ff13&| @73
+| +0#0000000&@56|3|,|3| @10|A|l@1| 
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 3ea9aff..90c6d53 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -983,6 +983,10 @@
   let buf = RunVimInTerminal('-S XtestSpellCap', {'rows': 8})
   call VerifyScreenDump(buf, 'Test_spell_2', {})
 
+  " After adding word missing Cap in next line is updated
+  call term_sendkeys(buf, "3GANot\<Esc>")
+  call VerifyScreenDump(buf, 'Test_spell_3', {})
+
   " clean up
   call StopVimInTerminal(buf)
   call delete('XtestSpellCap')
diff --git a/src/version.c b/src/version.c
index dedb6cc..0d7dada 100644
--- a/src/version.c
+++ b/src/version.c
@@ -700,6 +700,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    590,
+/**/
     589,
 /**/
     588,
