diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 5614b1fdced05e4a4f08af7aeb0a2f8303295d23..0bb2d0b2eb3ee9806adc3ac9c000f0be02896a57 100644
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -10301,8 +10301,18 @@ static void *pri_dchannel(void *vpri)
 		if (e) {
 			if (pri->debug)
 				pri_dump_event(pri->dchans[which], e);
-			if (e->e != PRI_EVENT_DCHAN_DOWN)
+
+			if (e->e != PRI_EVENT_DCHAN_DOWN) {
+				if (!(pri->dchanavail[which] & DCHAN_UP)) {
+					ast_verb(2, "%s D-Channel on span %d up\n", pri_order(which), pri->span);
+				}
 				pri->dchanavail[which] |= DCHAN_UP;
+			} else {
+				if (pri->dchanavail[which] & DCHAN_UP) {
+					ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span);
+				}
+				pri->dchanavail[which] &= ~DCHAN_UP;
+			}
 
 			if ((e->e != PRI_EVENT_DCHAN_UP) && (e->e != PRI_EVENT_DCHAN_DOWN) && (pri->pri != pri->dchans[which]))
 				/* Must be an NFAS group that has the secondary dchan active */
@@ -10310,8 +10320,6 @@ static void *pri_dchannel(void *vpri)
 
 			switch (e->e) {
 			case PRI_EVENT_DCHAN_UP:
-				ast_verb(2, "%s D-Channel on span %d up\n", pri_order(which), pri->span);
-				pri->dchanavail[which] |= DCHAN_UP;
 				if (!pri->pri) pri_find_dchan(pri);
 
 				/* Note presense of D-channel */
@@ -10330,8 +10338,6 @@ static void *pri_dchannel(void *vpri)
 					}
 				break;
 			case PRI_EVENT_DCHAN_DOWN:
-				ast_verb(2, "%s D-Channel on span %d down\n", pri_order(which), pri->span);
-				pri->dchanavail[which] &= ~DCHAN_UP;
 				pri_find_dchan(pri);
 				if (!pri_is_up(pri)) {
 					pri->resetting = 0;