diff --git a/asterisk.c b/asterisk.c
index 9f3b2342e58f8d856401b1b6c0aa187da5b37f84..5f25b0841b9c1418ba4e8d238a64467ee35bc6e6 100644
--- a/asterisk.c
+++ b/asterisk.c
@@ -161,9 +161,6 @@ int option_debug = 0;				/*!< Debug level */
 double option_maxload = 0.0;			/*!< Max load avg on system */
 int option_maxcalls = 0;			/*!< Max number of active calls */
 
-int option_internal_timing = 0;
-
-
 /*! @} */
 
 char record_cache_dir[AST_CACHE_DIR_LEN] = AST_TMP_DIR;
@@ -1975,7 +1972,7 @@ static void ast_readconfig(void)
 			ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_TRANSMIT_SILENCE);
 		/* Enable internal timing */
 		} else if (!strcasecmp(v->name, "internal_timing")) {
-			option_internal_timing = ast_true(v->value);
+			ast_set2_flag(&ast_options, ast_true(v->value), AST_OPT_FLAG_INTERNAL_TIMING);
 		} else if (!strcasecmp(v->name, "maxcalls")) {
 			if ((sscanf(v->value, "%d", &option_maxcalls) != 1) || (option_maxcalls < 0)) {
 				option_maxcalls = 0;
@@ -2110,7 +2107,7 @@ int main(int argc, char *argv[])
 			ast_set_flag(&ast_options, AST_OPT_FLAG_OVERRIDE_CONFIG);
 			break;
 		case 'I':
-			option_internal_timing = 1;
+			ast_set_flag(&ast_options, AST_OPT_FLAG_INTERNAL_TIMING);
 			break;
 		case 'i':
 			ast_set_flag(&ast_options, AST_OPT_FLAG_INIT_KEYS);
diff --git a/channel.c b/channel.c
index 717a92de0abc92c6e7b895b7bc53517af3981e49..e392c3a1a3988703d1c672171ef464438dbdd214 100644
--- a/channel.c
+++ b/channel.c
@@ -2033,9 +2033,9 @@ static struct ast_frame *__ast_read(struct ast_channel *chan, int dropaudio)
 
 int ast_internal_timing_enabled(struct ast_channel *chan)
 {
-	int ret = option_internal_timing && chan->timingfd > -1;
-	if (option_verbose > 2) 
-		ast_verbose(VERBOSE_PREFIX_3 "Internal timing is %s (option_internal_timing=%d chan->timingfd=%d)\n", ret? "enabled": "disabled", option_internal_timing, chan->timingfd);
+	int ret = ast_opt_internal_timing && chan->timingfd > -1;
+	if (option_debug > 3) 
+		ast_log(LOG_DEBUG, "Internal timing is %s (option_internal_timing=%d chan->timingfd=%d)\n", ret? "enabled": "disabled", ast_opt_internal_timing, chan->timingfd);
 	return ret;
 }
 
diff --git a/include/asterisk/options.h b/include/asterisk/options.h
index ba8b8b291dc88ae23d1f01098d836010060b793a..86d524092549484b5fb34a995a1863c13708a336 100644
--- a/include/asterisk/options.h
+++ b/include/asterisk/options.h
@@ -71,7 +71,9 @@ enum ast_option_flags {
 	/*! Suppress some warnings */
 	AST_OPT_FLAG_DONT_WARN = (1 << 18),
 	/*! End CDRs before the 'h' extension */
-	AST_OPT_END_CDR_BEFORE_H_EXTEN = (1 << 19)
+	AST_OPT_END_CDR_BEFORE_H_EXTEN = (1 << 19),
+	/*! Use Zaptel Timing for generators if available */
+	AST_OPT_FLAG_INTERNAL_TIMING = (1 << 20)
 };
 
 /*! These are the options that set by default when Asterisk starts */
@@ -97,6 +99,7 @@ enum ast_option_flags {
 #define ast_opt_transmit_silence	ast_test_flag(&ast_options, AST_OPT_FLAG_TRANSMIT_SILENCE)
 #define ast_opt_dont_warn		ast_test_flag(&ast_options, AST_OPT_FLAG_DONT_WARN)
 #define ast_opt_end_cdr_before_h_exten	ast_test_flag(&ast_options, AST_OPT_END_CDR_BEFORE_H_EXTEN)
+#define ast_opt_internal_timing		ast_test_flag(&ast_options, AST_OPT_FLAG_INTERNAL_TIMING)
 
 extern struct ast_flags ast_options;
 
@@ -104,7 +107,6 @@ extern int option_verbose;
 extern int option_debug;		/*!< Debugging */
 extern int option_maxcalls;		/*!< Maximum number of simultaneous channels */
 extern double option_maxload;
-extern int option_internal_timing;	/*!< Flag for internal timing (RTP) */
 extern char defaultlanguage[];
 
 extern time_t ast_startuptime;