diff --git a/src/proto/syntax.pro b/src/proto/syntax.pro
index 12dc9de..7ae13e9 100644
--- a/src/proto/syntax.pro
+++ b/src/proto/syntax.pro
@@ -15,7 +15,7 @@
 void set_context_in_syntax_cmd __ARGS((expand_T *xp, char_u *arg));
 char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
 int syn_get_id __ARGS((win_T *wp, long lnum, colnr_T col, int trans, int *spellp, int keep_state));
-int get_syntax_info __ARGS((int *idp));
+int get_syntax_info __ARGS((int *seqnrp));
 int syn_get_sub_char __ARGS((void));
 int syn_get_stack_item __ARGS((int i));
 int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
diff --git a/src/screen.c b/src/screen.c
index 1756fc0..e7c3ad2 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -2816,7 +2816,7 @@
 
 #ifdef FEAT_CONCEAL
     int		syntax_flags	= 0;
-    int		syntax_id	= 0;
+    int		syntax_seqnr	= 0;
     int		prev_syntax_id	= 0;
     int		conceal_attr	= hl_attr(HLF_CONCEAL);
     int		is_concealing	= FALSE;
@@ -4099,7 +4099,7 @@
 		    if (c == NUL)
 			syntax_flags = 0;
 		    else
-			syntax_flags = get_syntax_info(&syntax_id);
+			syntax_flags = get_syntax_info(&syntax_seqnr);
 # endif
 		}
 #endif
@@ -4430,7 +4430,7 @@
 		&& !lnum_in_visual_area)
 	    {
 		char_attr = conceal_attr;
-		if (prev_syntax_id != syntax_id
+		if (prev_syntax_id != syntax_seqnr
 			&& (syn_get_sub_char() != NUL || wp->w_p_cole == 1)
 			&& wp->w_p_cole != 3)
 		{
@@ -4443,7 +4443,7 @@
 		    else
 			c = ' ';
 
-		    prev_syntax_id = syntax_id;
+		    prev_syntax_id = syntax_seqnr;
 
 		    if (n_extra > 0)
 			vcol_off += n_extra;
diff --git a/src/syntax.c b/src/syntax.c
index 5880803..099e0a7 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -196,6 +196,7 @@
 static int current_trans_id = 0;    /* idem, transparency removed */
 #endif
 #ifdef FEAT_CONCEAL
+static int current_seqnr = 0;
 static int current_flags = 0;
 static int current_sub_char = 0;
 #endif
@@ -287,6 +288,7 @@
 					 * HL_SKIP* for si_next_list */
 #ifdef FEAT_CONCEAL
     int		si_char;		/* substitution character for conceal */
+    int		si_seqnr;		/* sequence number */
 #endif
     short	*si_cont_list;		/* list of contained groups */
     short	*si_next_list;		/* nextgroup IDs after this item ends */
@@ -298,6 +300,10 @@
 #define ID_LIST_ALL	(short *)-1 /* valid of si_cont_list for containing all
 				       but contained groups */
 
+#ifdef FEAT_CONCEAL
+static int next_seqnr = 0;		/* value to use for si_seqnr */
+#endif
+
 /*
  * Struct to reduce the number of arguments to get_syn_options(), it's used
  * very often.
@@ -1949,6 +1955,7 @@
 			cur_si->si_end_idx = 0;
 			cur_si->si_flags = flags;
 #ifdef FEAT_CONCEAL
+			cur_si->si_seqnr = next_seqnr++;
 			cur_si->si_char = cchar;
 			if (current_state.ga_len > 1)
 			    cur_si->si_flags |=
@@ -2280,6 +2287,7 @@
 #ifdef FEAT_CONCEAL
 		current_flags = sip->si_flags;
 		current_sub_char = sip->si_char;
+		current_seqnr = sip->si_seqnr;
 #endif
 		break;
 	    }
@@ -2433,6 +2441,7 @@
 	cur_si->si_m_lnum = current_lnum;
 	cur_si->si_flags = spp->sp_flags;
 #ifdef FEAT_CONCEAL
+	cur_si->si_seqnr = next_seqnr++;
 	cur_si->si_char = spp->sp_char;
 	if (current_state.ga_len > 1)
 	    cur_si->si_flags |=
@@ -6336,14 +6345,14 @@
 /*
  * Get extra information about the syntax item.  Must be called right after
  * get_syntax_attr().
- * Stores the current item ID in "*idp".
+ * Stores the current item sequence nr in "*seqnrp".
  * Returns the current flags.
  */
     int
-get_syntax_info(idp)
-    int		*idp;
+get_syntax_info(seqnrp)
+    int		*seqnrp;
 {
-    *idp = current_id;
+    *seqnrp = current_seqnr;
     return current_flags;
 }
 
