diff --git a/apps/app_macro.c b/apps/app_macro.c
index a48defacfb4018378d3551fdc11542119427c7e6..4e8a5936e2126181f6e6ec5ba334985ce8e78df3 100755
--- a/apps/app_macro.c
+++ b/apps/app_macro.c
@@ -152,7 +152,8 @@ static int macro_exec(struct ast_channel *chan, void *data)
   while(ast_exists_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num)) {
 	if ((res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num))) {
 		/* Something bad happened, or a hangup has been requested. */
-		if (((res >= '0') && (res <= '9')) || ((res >= 'A') && (res <= 'F'))) {
+		if (((res >= '0') && (res <= '9')) || ((res >= 'A') && (res <= 'F')) ||
+		    (res == '*') || (res == '#')) {
 			/* Just return result as to the previous application as if it had been dialed */
 			ast_log(LOG_DEBUG, "Oooh, got something to jump out with ('%c')!\n", res);
 			break;