diff --git a/channels/chan_zap.c b/channels/chan_zap.c
index 706f4c780c791e8d5b53f2d1cc829e9056a8b5da..32ca907f194d0ec02bb6e2bbd794d83a50685a6b 100755
--- a/channels/chan_zap.c
+++ b/channels/chan_zap.c
@@ -6510,9 +6510,9 @@ static void *pri_dchannel(void *vpri)
 						if (!pri->pvt[chan]->alreadyhungup) {
 							/* we're calling here zt_hangup so once we get there we need to clear p->call after calling pri_hangup */
 							pri->pvt[chan]->alreadyhungup = 1;
-							pri->pvt[chan]->owner->hangupcause = hangup_pri2cause(e->hangup.cause);
 							/* Queue a BUSY instead of a hangup if our cause is appropriate */
 							if (pri->pvt[chan]->owner) {
+								pri->pvt[chan]->owner->hangupcause = hangup_pri2cause(e->hangup.cause);
 								switch(e->hangup.cause) {
 								case PRI_CAUSE_USER_BUSY:
 									pri->pvt[chan]->subs[SUB_REAL].needbusy =1;