diff --git a/apps/app_dial.c b/apps/app_dial.c
index 0d30dc1189fdbb9a9cc8fc679c4e061b8ab2aa49..3b641bdac6ca58b1c42dee8360003f9a1d7ced50 100644
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -1727,8 +1727,11 @@ out:
 	if (option_debug)
 		ast_log(LOG_DEBUG, "Exiting with DIALSTATUS=%s.\n", pa.status);
 	
-	if ((ast_test_flag(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE))
+	if ((ast_test_flag(peerflags, OPT_GO_ON)) && (!chan->_softhangup) && (res != AST_PBX_KEEPALIVE)) {
+		if (calldurationlimit)
+			chan->whentohangup = 0;
 		res = 0;
+	}
 
 done:
 	ast_module_user_remove(u);    	/* XXX probably not the right place for this. */