diff --git a/src/spell.c b/src/spell.c
index d12a4bc..ffe5a20 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -4142,8 +4142,8 @@
     char_u	*af_enc;	/* "SET", normalized, alloc'ed string or NULL */
     int		af_flagtype;	/* AFT_CHAR, AFT_LONG, AFT_NUM or AFT_CAPLONG */
     int		af_slash;	/* character used in word for slash */
-    unsigned	af_rar;		/* RAR ID for rare word */
-    unsigned	af_kep;		/* KEP ID for keep-case word */
+    unsigned	af_rare;	/* RARE ID for rare word */
+    unsigned	af_keepcase;	/* KEEPCASE ID for keep-case word */
     unsigned	af_bad;		/* BAD ID for banned word */
     unsigned	af_needaffix;	/* NEEDAFFIX ID */
     unsigned	af_needcomp;	/* NEEDCOMPOUND ID */
@@ -4625,7 +4625,9 @@
 		else
 		    smsg((char_u *)_("Invalid value for FLAG in %s line %d: %s"),
 			    fname, lnum, items[1]);
-		if (aff->af_rar != 0 || aff->af_kep != 0 || aff->af_bad != 0
+		if (aff->af_rare != 0
+			|| aff->af_keepcase != 0
+			|| aff->af_bad != 0
 			|| aff->af_needaffix != 0
 			|| aff->af_needcomp != 0
 			|| compflags != NULL
@@ -4655,16 +4657,20 @@
 		    smsg((char_u *)_("Character used for SLASH must be ASCII; in %s line %d: %s"),
 			    fname, lnum, items[1]);
 	    }
-	    else if (STRCMP(items[0], "RAR") == 0 && itemcnt == 2
-						       && aff->af_rar == 0)
+	    /* TODO: remove "RAR" later */
+	    else if ((STRCMP(items[0], "RAR") == 0
+			|| STRCMP(items[0], "RARE") == 0) && itemcnt == 2
+						       && aff->af_rare == 0)
 	    {
-		aff->af_rar = affitem2flag(aff->af_flagtype, items[1],
+		aff->af_rare = affitem2flag(aff->af_flagtype, items[1],
 								 fname, lnum);
 	    }
-	    else if (STRCMP(items[0], "KEP") == 0 && itemcnt == 2
-						       && aff->af_kep == 0)
+	    /* TODO: remove "KEP" later */
+	    else if ((STRCMP(items[0], "KEP") == 0
+		    || STRCMP(items[0], "KEEPCASE") == 0) && itemcnt == 2
+						     && aff->af_keepcase == 0)
 	    {
-		aff->af_kep = affitem2flag(aff->af_flagtype, items[1],
+		aff->af_keepcase = affitem2flag(aff->af_flagtype, items[1],
 								 fname, lnum);
 	    }
 	    else if (STRCMP(items[0], "BAD") == 0 && itemcnt == 2
@@ -4795,11 +4801,11 @@
 		    if (cur_aff->ah_flag == 0 || STRLEN(items[1]) >= AH_KEY_LEN)
 			break;
 		    if (cur_aff->ah_flag == aff->af_bad
-			    || cur_aff->ah_flag == aff->af_rar
-			    || cur_aff->ah_flag == aff->af_kep
+			    || cur_aff->ah_flag == aff->af_rare
+			    || cur_aff->ah_flag == aff->af_keepcase
 			    || cur_aff->ah_flag == aff->af_needaffix
 			    || cur_aff->ah_flag == aff->af_needcomp)
-			smsg((char_u *)_("Affix also used for BAD/RAR/KEP/NEEDAFFIX/NEEDCOMPOUND in %s line %d: %s"),
+			smsg((char_u *)_("Affix also used for BAD/RARE/KEEPCASE/NEEDAFFIX/NEEDCOMPOUND in %s line %d: %s"),
 						       fname, lnum, items[1]);
 		    STRCPY(cur_aff->ah_key, items[1]);
 		    hash_add(tp, cur_aff->ah_key);
@@ -5786,11 +5792,11 @@
 	{
 	    /* Check for affix name that stands for keep-case word and stands
 	     * for rare word (if defined). */
-	    if (affile->af_kep != 0 && flag_in_afflist(
-				affile->af_flagtype, afflist, affile->af_kep))
+	    if (affile->af_keepcase != 0 && flag_in_afflist(
+			   affile->af_flagtype, afflist, affile->af_keepcase))
 		flags |= WF_KEEPCAP | WF_FIXCAP;
-	    if (affile->af_rar != 0 && flag_in_afflist(
-				affile->af_flagtype, afflist, affile->af_rar))
+	    if (affile->af_rare != 0 && flag_in_afflist(
+				affile->af_flagtype, afflist, affile->af_rare))
 		flags |= WF_RARE;
 	    if (affile->af_bad != 0 && flag_in_afflist(
 				affile->af_flagtype, afflist, affile->af_bad))
