diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 8f686957422fe74e68c10173216680354b69610f..b9f55fdbc1dfffaabfb3bcfc7ff933a4f42f5ff7 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -392,6 +392,7 @@ static struct zt_pvt {
 	struct zt_pvt *prev;			/* Prev channel in list */
 
 	struct zt_distRings drings;
+	int usedistinctiveringdetection;
 
 	char context[AST_MAX_EXTENSION];
 	char defcontext[AST_MAX_EXTENSION];
@@ -4667,7 +4668,7 @@ static void *ss_thread(void *data)
 							break;
 					}
 				}
-				if (usedistinctiveringdetection == 1) {
+				if (p->usedistinctiveringdetection == 1) {
 					if(option_verbose > 2)
 						/* this only shows up if you have n of the dring patterns filled in */
 						ast_verbose( VERBOSE_PREFIX_3 "Detected ring pattern: %d,%d,%d\n",curRingData[0],curRingData[1],curRingData[2]);
@@ -5522,6 +5523,7 @@ static struct zt_pvt *mkintf(int channel, int signalling, int radio)
 		/* Flag to destroy the channel must be cleared on new mkif.  Part of changes for reload to work */
 		tmp->destroy = 0;
 		tmp->drings = drings;
+		tmp->usedistinctiveringdetection = usedistinctiveringdetection;
 		tmp->callwaitingcallerid = callwaitingcallerid;
 		tmp->threewaycalling = threewaycalling;
 		tmp->adsi = adsi;
@@ -7406,7 +7408,7 @@ static int setup_zap(void)
 				chan = strsep(&c, ",");
 			}
 		} else if (!strcasecmp(v->name, "usedistinctiveringdetection")) {
-			if (!strcasecmp(v->value, "yes")) usedistinctiveringdetection = 1;
+			usedistinctiveringdetection = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "dring1context")) {
 			strncpy(drings.ringContext[0].contextData,v->value,sizeof(drings.ringContext[0].contextData)-1);
 		} else if (!strcasecmp(v->name, "dring2context")) {
@@ -7969,7 +7971,7 @@ static int reload_zt(void)
 				chan = strsep(&stringp, ",");
 			}
 		} else if (!strcasecmp(v->name, "usedistinctiveringdetection")) {
-			if (!strcasecmp(v->value, "yes")) usedistinctiveringdetection = 1;
+			usedistinctiveringdetection = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "dring1context")) {
 			strncpy(drings.ringContext[0].contextData,v->value,sizeof(drings.ringContext[0].contextData)-1);
 		} else if (!strcasecmp(v->name, "dring2context")) {