diff --git a/main/rtp.c b/main/rtp.c
index 1e79ea40529a2081af3f0de5e2bc684f0b1cdb79..153426827e01aa32b732f043a3415de72765a5ce 100644
--- a/main/rtp.c
+++ b/main/rtp.c
@@ -731,6 +731,12 @@ static struct ast_frame *process_rfc2833(struct ast_rtp *rtp, unsigned char *dat
 		f->samples = duration;
 		rtp->resp = 0;
 		rtp->lasteventendseqn = seqno;
+	} else if (ast_test_flag(rtp, FLAG_DTMF_COMPENSATE) && event_end & 0x80 && rtp->lasteventendseqn != seqno) {
+		rtp->resp = resp;
+		f = send_dtmf(rtp, AST_FRAME_DTMF_END);
+		f->samples = duration;
+		rtp->resp = 0;
+		rtp->lasteventendseqn = seqno;
 	}
 
 	rtp->dtmfcount = dtmftimeout;