diff --git a/src/switch_ivr_originate.c b/src/switch_ivr_originate.c
index 3addeb3c46..1bf38b4775 100644
--- a/src/switch_ivr_originate.c
+++ b/src/switch_ivr_originate.c
@@ -1050,6 +1050,15 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_wait_for_answer(switch_core_session_t
 		status = SWITCH_STATUS_FALSE;
 	}
 
+	if (switch_channel_test_flag(caller_channel, CF_XFER_ZOMBIE)) {
+		switch_channel_state_t peer_state = switch_channel_get_state(peer_channel);
+
+		while (switch_channel_ready(peer_channel) && switch_channel_get_state(peer_channel) == peer_state) {
+			switch_channel_ready(caller_channel);
+			switch_yield(20000);
+		}
+	}
+
 	if (caller_channel && !switch_channel_up(caller_channel)) {
 		status = SWITCH_STATUS_FALSE;
 	}