diff --git a/apps/app_directory.c b/apps/app_directory.c
index 4344c85c2a3f6ad13884a0788f1188ff6ce808f7..39b7488c6c38d2ed5a3629125a595956b245931b 100755
--- a/apps/app_directory.c
+++ b/apps/app_directory.c
@@ -300,8 +300,11 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *
 		return -1;
 	}
 	if (digit == '0') {
-		if (ast_goto_if_exists(chan, chan->context, "o", 1) || 
-			 (!ast_strlen_zero(chan->macrocontext) && ast_goto_if_exists(chan, chan->macrocontext, "o", 1))) {
+		if (ast_exists_extension(chan,chan->context,"o",1,chan->cid.cid_num) || 
+		    (!ast_strlen_zero(chan->macrocontext) &&
+		     ast_exists_extension(chan, chan->macrocontext, "o", 1, chan->cid.cid_num))) {
+			strcpy(chan->exten, "o");
+			chan->priority = 0;
 			return 0;
 		} else {
 
@@ -311,8 +314,11 @@ static int do_directory(struct ast_channel *chan, struct ast_config *cfg, char *
 		}
 	}	
 	if (digit == '*') {
-		if (ast_goto_if_exists(chan, chan->context, "a", 1) || 
-			 (!ast_strlen_zero(chan->macrocontext) && ast_goto_if_exists(chan, chan->macrocontext, "a", 1))) {
+		if (ast_exists_extension(chan,chan->context,"a",1,chan->cid.cid_num) || 
+		    (!ast_strlen_zero(chan->macrocontext) &&
+		     ast_exists_extension(chan, chan->macrocontext, "a", 1, chan->cid.cid_num))) {
+			strcpy(chan->exten, "a");
+			chan->priority = 0;
 			return 0;
 		} else {
 			ast_log(LOG_WARNING, "Can't find extension 'a' in current context.  "