diff --git a/app.c b/app.c
index 8c6ceffa7265dacb84c4943bb9c6a2d36c32710e..e05d9d4714c56aa9f928d6827dd6dbf83a949da8 100644
--- a/app.c
+++ b/app.c
@@ -549,8 +549,7 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
 		sfmt[fmtcnt++] = ast_strdupa(fmt);
 	}
 
-	time(&start);
-	end = start;  /* pre-initialize end to be same as start in case we never get into loop */
+	end = start = time(NULL);  /* pre-initialize end to be same as start in case we never get into loop */
 	for (x = 0; x < fmtcnt; x++) {
 		others[x] = ast_writefile(prepend ? prependfile : recordfile, sfmt[x], comment, O_TRUNC, 0, 0700);
 		if (option_verbose > 2)
@@ -670,7 +669,7 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
 				}
 			}
 			if (maxtime) {
-				time(&end);
+				end = time(NULL);
 				if (maxtime < (end - start)) {
 					if (option_verbose > 2)
 						ast_verbose(VERBOSE_PREFIX_3 "Took too long, cutting it short...\n");
@@ -689,7 +688,8 @@ static int __ast_play_and_record(struct ast_channel *chan, const char *playfile,
 		} else {
 			ast_frfree(f);
 		}
-		if (end == start) time(&end);
+		if (end == start)
+			end = time(NULL);
 	} else {
 		ast_log(LOG_WARNING, "Error creating writestream '%s', format '%s'\n", recordfile, sfmt[x]);
 	}
@@ -931,7 +931,7 @@ enum AST_LOCK_RESULT ast_lock_path(const char *path)
 	close(fd);
 
 	snprintf(s, strlen(path) + 9, "%s/.lock", path);
-	time(&start);
+	start = time(NULL);
 	while (((res = link(fs, s)) < 0) && (errno == EEXIST) && (time(NULL) - start < 5))
 		usleep(1);
 	if (res) {