diff --git a/configs/features.conf.sample b/configs/features.conf.sample
index 20eb427474e920a3a5ae96e6a3b034ec64884a05..4b0fda5ac78036b3fc6c181599e8602f091992f5 100755
--- a/configs/features.conf.sample
+++ b/configs/features.conf.sample
@@ -7,3 +7,4 @@ parkext => 700				; What ext. to dial to park
 parkpos => 701-720			; What extensions to park calls on
 context => parkedcalls			; Which context parked calls are in
 ;parkingtime => 45			; Number of seconds a call can be parked for (default is 45 seconds)
+;transferdigittimeout => 3	; Number of seconds to wait between digits when transfering a call
diff --git a/res/res_features.c b/res/res_features.c
index 2190cd285157fa2a3a60898e30a906a31f7f6be1..f6b4dfcdabc7aa4969a615c5bca4785c0c53aa2a 100755
--- a/res/res_features.c
+++ b/res/res_features.c
@@ -38,6 +38,7 @@
 #include <netinet/in.h>
 
 #define DEFAULT_PARK_TIME 45000
+#define DEFAULT_TRANSFER_DIGIT_TIMEOUT 3000
 
 static char *parkedcall = "ParkedCall";
 
@@ -58,6 +59,8 @@ static int parking_start = 701;
 /* Last available extension for parking */
 static int parking_stop = 750;
 
+static int transferdigittimeout = DEFAULT_TRANSFER_DIGIT_TIMEOUT;
+
 /* Registrar for operations */
 static char *registrar = "res_parking";
 
@@ -342,7 +345,7 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
 				}
 				res = 0;
 				while(strlen(newext) < sizeof(newext) - 1) {
-					res = ast_waitfordigit(transferer, 3000);
+					res = ast_waitfordigit(transferer, transferdigittimeout);
 					if (res < 1) 
 						break;
 					if (res == '#')
@@ -728,6 +731,12 @@ int load_module(void)
 					parking_start = start;
 					parking_stop = end;
 				}
+			} else if(!strcasecmp(var->name, "transferdigittimeout")) {
+				if ((sscanf(var->value, "%d", &transferdigittimeout) != 1) || (transferdigittimeout < 1)) {
+					ast_log(LOG_WARNING, "%s is not a valid transferdigittimeout\n", var->value);
+					transferdigittimeout = DEFAULT_TRANSFER_DIGIT_TIMEOUT;
+				} else
+					transferdigittimeout = transferdigittimeout * 1000;
 			}
 			var = var->next;
 		}