diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 13088f86db0026879e22a1338d77ea7ae3445ced..94809af790dbdf367df82b816024a37893c4a126 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -247,6 +247,8 @@ static int callwaitingcallerid = 0;
 
 static int hidecallerid = 0;
 
+static int hidecalleridname = 0;
+
 static int restrictcid = 0;
 
 static int use_callingpres = 0;
@@ -613,6 +615,7 @@ static struct zt_pvt {
 	unsigned int hanguponpolarityswitch:1;
 	unsigned int hardwaredtmf:1;
 	unsigned int hidecallerid;
+	unsigned int hidecalleridname;      /*!< Hide just the name not the number for legacy PBX use */
 	unsigned int ignoredtmf:1;
 	unsigned int immediate:1;			/*!< Answer before getting digits? */
 	unsigned int inalarm:1;
@@ -2239,6 +2242,10 @@ static int zt_call(struct ast_channel *ast, char *rdest, int timeout)
 			c++;
 		else
 			c = dest;
+		if (!p->hidecalleridname)
+			n = ast->cid.cid_name;
+		else
+			n = NULL;
 		if (!p->hidecallerid) {
 			l = ast->cid.cid_num;
 			n = ast->cid.cid_name;
@@ -8337,7 +8344,7 @@ static void ss7_inservice(struct zt_ss7 *linkset, int startcic, int endcic)
 	}
 }
 
-static int ss7_reset_linkset(struct zt_ss7 *linkset)
+static void ss7_reset_linkset(struct zt_ss7 *linkset)
 {
 	int i, startcic = -1, endcic;
 
@@ -11820,6 +11827,8 @@ static int process_zap(struct ast_variable *v, int reload, int skipchannels)
 				echotraining = 0;
 		} else if (!strcasecmp(v->name, "hidecallerid")) {
 			hidecallerid = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "hidecalleridname")) {
+			hidecalleridname = ast_true(v->value);
  		} else if (!strcasecmp(v->name, "pulsedial")) {
  			pulse = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "callreturn")) {