diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index 871133f17217ec6bba590e77cc560f0ce19e0531..0afcaf3ebd6ef4a451f75007bc7461c8fa742ef0 100755
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -9236,7 +9236,7 @@ static void handle_response(struct sip_pvt *p, int resp, char *rest, struct sip_
 		__sip_ack(p, seqno, 0, sipmethod);
 
 	/* Get their tag if we haven't already */
-	if (ast_strlen_zero(p->theirtag)) {
+	if (ast_strlen_zero(p->theirtag) || (resp >= 200)) {
 		to = get_header(req, "To");
 		to = strcasestr(to, "tag=");
 		if (to) {