diff --git a/apps/app_dial.c b/apps/app_dial.c
index 06fc924e93fd35bb21404287278021d4942a8348..e69b8f0849012747bb12a7e9a5830288fa262bc7 100755
--- a/apps/app_dial.c
+++ b/apps/app_dial.c
@@ -106,7 +106,8 @@ static char *descrip =
 "             * LIMIT_CONNECT_FILE        File to play when call begins.\n"
 "             * LIMIT_WARNING_FILE        File to play as warning if 'y' is defined.\n"
 "                        'timeleft' is a special sound macro to auto-say the time \n"
-"                        left and is the default.\n\n"
+"                        left and is the default.\n"
+"       'n' -- Do not jump to n+101 if all of the channels were busy.\n\n"
 "  In addition to transferring the call, a call may be parked and then picked\n"
 "up by another user.\n"
 "  The optional URL will be sent to the called party if the channel supports it.\n"
@@ -258,7 +259,7 @@ static void senddialevent(struct ast_channel *src, struct ast_channel *dst)
 			   dst->uniqueid);
 }
 
-static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int *result)
+static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localuser *outgoing, int *to, struct ast_flags *peerflags, int *sentringing, char *status, size_t statussize, int busystart, int nochanstart, int congestionstart, int nojump, int *result)
 {
 	struct localuser *o;
 	int found;
@@ -314,7 +315,7 @@ static struct ast_channel *wait_for_answer(struct ast_channel *in, struct localu
 				else if (numnochan)
 					strncpy(status, "CHANUNAVAIL", statussize - 1);
 				/* See if there is a special busy message */
-				if (ast_exists_extension(in, in->context, in->exten, in->priority + 101, in->cid.cid_num)) 
+				if (!nojump && ast_exists_extension(in, in->context, in->exten, in->priority + 101, in->cid.cid_num)) 
 					in->priority+=100;
 			} else {
 				if (option_verbose > 2)
@@ -645,6 +646,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 	time_t start_time, answer_time, end_time;
 	struct ast_app *app = NULL;
 	char *dblgoto = NULL;
+	int nojump = 0;
 
 	if (!data) {
 		ast_log(LOG_WARNING, "Dial requires an argument (technology1/number1&technology2/number2...|optional timeout|options)\n");
@@ -896,7 +898,9 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 			privacy = 1;
 		} else if (strchr(transfer, 'C')) {
 			resetcdr = 1;
-		}
+		} else if (strchr(transfer, 'n')) {
+		        nojump = 1;
+                }
 	}
 	if (resetcdr && chan->cdr)
 		ast_cdr_reset(chan->cdr, 0);
@@ -1115,7 +1119,7 @@ static int dial_exec_full(struct ast_channel *chan, void *data, struct ast_flags
 		strncpy(status, "CHANUNAVAIL", sizeof(status) - 1);
 
 	time(&start_time);
-	peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, status, sizeof(status), numbusy, numnochan, numcongestion, &result);
+	peer = wait_for_answer(chan, outgoing, &to, peerflags, &sentringing, status, sizeof(status), numbusy, numnochan, numcongestion, nojump, &result);
 	
 	if (!peer) {
 		if (result) {