diff --git a/apps/app_voicemail2.c b/apps/app_voicemail2.c
index 0ee22fb14bb89e9ff1596a4acad3e7faf6876629..186f26e7ecc50070b500d73e051528cfea89aa17 100755
--- a/apps/app_voicemail2.c
+++ b/apps/app_voicemail2.c
@@ -164,7 +164,7 @@ static void apply_options(struct ast_vm_user *vmu, char *options)
 	char *s;
 	char *var, *value;
 	while((s = strsep(&stringp, "|"))) {
-		value = stringp;
+		value = s;
 		if ((var = strsep(&value, "=")) && value) {
 			if (!strcasecmp(var, "attach")) {
 				if (ast_true(value))
@@ -1937,13 +1937,6 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v
 		}
 	}
 
-	/* If no zone, use a default */
-	if (!the_zone) {
-		the_zone = alloca(sizeof(struct vm_zone));
-		memset(the_zone,0,sizeof(struct vm_zone));
-		strncpy(the_zone->msg_format, "'vm-received' q 'digits/at' IMp", sizeof(the_zone->msg_format) - 1);
-	}
-
 /* No internal variable parsing for now, so we'll comment it out for the time being */
 #if 0
 	/* Set the DIFF_* variables */
@@ -1961,7 +1954,10 @@ static int play_message_datetime(struct ast_channel *chan, struct ast_vm_user *v
 
 	/* Can't think of how other diffs might be helpful, but I'm sure somebody will think of something. */
 #endif
-	res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone);
+	if (! the_zone)
+		res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, the_zone->msg_format, the_zone->timezone);
+	else
+		res = ast_say_date_with_format(chan, t, AST_DIGIT_ANY, chan->language, "'vm-received' q 'digits/at' IMp", NULL);
 #if 0
 	pbx_builtin_setvar_helper(chan, "DIFF_DAY", NULL);
 #endif