diff --git a/src/term.c b/src/term.c
index 9e8bc3b..716c89c 100644
--- a/src/term.c
+++ b/src/term.c
@@ -1360,6 +1360,9 @@
 static char_u	termleader[256 + 1];	    /* for check_termcode() */
 #ifdef FEAT_TERMRESPONSE
 static int	check_for_codes = FALSE;    /* check for key code response */
+# ifdef MACOS
+static int	is_terminal_app = FALSE;    /* recognized Terminal.app */
+# endif
 #endif
 
     static struct builtin_term *
@@ -3497,8 +3500,6 @@
     void
 may_req_bg_color(void)
 {
-    int done = FALSE;
-
     if (can_get_termresponse() && starting == 0)
     {
 	/* Only request background if t_RB is set and 'background' wasn't
@@ -3510,27 +3511,13 @@
 	    LOG_TR("Sending BG request");
 	    out_str(T_RBG);
 	    rbg_status = STATUS_SENT;
-	    done = TRUE;
-	}
 
-	/* Only request the cursor shape if t_SH and t_RS are set. */
-	if (rcm_status == STATUS_GET
-		&& *T_CSH != NUL
-		&& *T_CRS != NUL)
-	{
-	    LOG_TR("Sending cursor shape request");
-	    out_str(T_CRS);
-	    rcm_status = STATUS_SENT;
-	    done = TRUE;
+	    /* check for the characters now, otherwise they might be eaten by
+	     * get_keystroke() */
+	    out_flush();
+	    (void)vpeekc_nomap();
 	}
     }
-    if (done)
-    {
-	/* check for the characters now, otherwise they might be eaten by
-	 * get_keystroke() */
-	out_flush();
-	(void)vpeekc_nomap();
-    }
 }
 
 # ifdef DEBUG_TERMRESPONSE
@@ -4531,6 +4518,33 @@
 			    if (mch_getenv((char_u *)"COLORS") == NULL)
 				may_adjust_color_count(256);
 			}
+
+#  ifdef MACOS
+			/* Mac Terminal.app sends 1;95;0 */
+			if (col == 95
+				&& STRNCMP(tp + extra - 2, ">1;95;0c", 9) == 0)
+			{
+			    /* Terminal.app sets $TERM to "xterm-256colors",
+			     * but it's not fully xterm compatible. */
+			    is_terminal_app = TRUE;
+			}
+#  endif
+
+			/* Only request the cursor style if t_SH and t_RS are
+			 * set. Not for Terminal.app, it can't handle t_RS, it
+			 * echoes the characters to the screen. */
+			if (rcm_status == STATUS_GET
+#  ifdef MACOS
+				&& !is_terminal_app
+#  endif
+				&& *T_CSH != NUL
+				&& *T_CRS != NUL)
+			{
+			    LOG_TR("Sending cursor style request");
+			    out_str(T_CRS);
+			    rcm_status = STATUS_SENT;
+			    out_flush();
+			}
 		    }
 # ifdef FEAT_EVAL
 		    set_vim_var_string(VV_TERMRESPONSE, tp, i + 1);
diff --git a/src/version.c b/src/version.c
index 9ce38f0..430ac8b 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    996,
+/**/
     995,
 /**/
     994,
