diff --git a/apps/app_waituntil.c b/apps/app_waituntil.c
index 1334683ce7d711529dadd7a39ae779fe04ae4d37..98345b141c4b0d5c642b8118cbf713cd5dc3936e 100644
--- a/apps/app_waituntil.c
+++ b/apps/app_waituntil.c
@@ -48,6 +48,7 @@ static int waituntil_exec(struct ast_channel *chan, void *data)
 {
 	int res;
 	double fraction;
+	long seconds;
 	struct timeval future = { 0, };
 	struct timeval tv = ast_tvnow();
 	int msec;
@@ -58,12 +59,13 @@ static int waituntil_exec(struct ast_channel *chan, void *data)
 		return 0;
 	}
 
-	if (sscanf(data, "%ld%lf", (long *)&future.tv_sec, &fraction) == 0) {
+	if (sscanf(data, "%ld%lf", &seconds, &fraction) == 0) {
 		ast_log(LOG_WARNING, "WaitUntil called with non-numeric argument\n");
 		pbx_builtin_setvar_helper(chan, "WAITUNTILSTATUS", "FAILURE");
 		return 0;
 	}
 
+	future.tv_sec = seconds;
 	future.tv_usec = fraction * 1000000;
 
 	if ((msec = ast_tvdiff_ms(future, tv)) < 0) {
diff --git a/funcs/func_timeout.c b/funcs/func_timeout.c
index 2f282b336f8ee4951f39dbbdff489a19bbd275af..77d7c297eb46f2bc6a122732d2c0ca24bd1fd0e1 100644
--- a/funcs/func_timeout.c
+++ b/funcs/func_timeout.c
@@ -84,6 +84,7 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
 			 const char *value)
 {
 	double x;
+	long sec;
 	char timestr[64];
 	struct ast_tm myt;
 	struct timeval tv;
@@ -99,10 +100,12 @@ static int timeout_write(struct ast_channel *chan, const char *cmd, char *data,
 	if (!value)
 		return -1;
 
-	if ((sscanf(value, "%ld%lf", (long *)&tv.tv_sec, &x) == 0) || tv.tv_sec < 0)
+	if ((sscanf(value, "%ld%lf", &sec, &x) == 0) || sec < 0)
 		tv.tv_sec = 0;
-	else
+	else {
+		tv.tv_sec = sec;
 		tv.tv_usec = x * 1000000;
+	}
 
 	switch (*data) {
 	case 'a':
diff --git a/main/features.c b/main/features.c
index 0b8797fcc40252c77ca3c945faeee7dba292a0c9..333b5a0f217aa330cf69bffb55fe835feb87febf 100644
--- a/main/features.c
+++ b/main/features.c
@@ -3565,7 +3565,8 @@ static char *handle_parkedcalls(struct ast_cli_entry *e, int cmd, struct ast_cli
 		AST_LIST_TRAVERSE(&curlot->parkings, cur, list) {
 			ast_cli(a->fd, "%-10.10s %25s (%-15s %-12s %-4d) %6lds\n"
 				,cur->parkingexten, cur->chan->name, cur->context, cur->exten
-				,cur->priority, cur->start.tv_sec + (cur->parkingtime/1000) - time(NULL));
+				,cur->priority,
+				(long)(cur->start.tv_sec + (cur->parkingtime/1000) - time(NULL)) );
 			numparked++;
 			numparked += lotparked;
 		}
diff --git a/main/manager.c b/main/manager.c
index 2df5e81642e9e132ece0515339ae79d63f84f7a7..9ad8bd8ca27c52016a4e954d1e6a8113bf5cab92 100644
--- a/main/manager.c
+++ b/main/manager.c
@@ -3105,7 +3105,7 @@ int __manager_event(int category, const char *event,
 		now = ast_tvnow();
 		ast_str_append(&buf, 0,
 				"Timestamp: %ld.%06lu\r\n",
-				 now.tv_sec, (unsigned long) now.tv_usec);
+				 (long)now.tv_sec, (unsigned long) now.tv_usec);
 	}
 	if (manager_debug) {
 		static int seq;
diff --git a/main/sched.c b/main/sched.c
index 91d86164e55c9c7583deada54188cbe1a9b0cfc5..c40375d7267d4905e991c40c0dff7a48481fec5f 100644
--- a/main/sched.c
+++ b/main/sched.c
@@ -437,7 +437,7 @@ void ast_sched_dump(const struct sched_context *con)
 			q->id,
 			q->callback,
 			q->data,
-			delta.tv_sec,
+			(long)delta.tv_sec,
 			(long int)delta.tv_usec);
 	}
 	ast_debug(1, "=============================================================\n");
diff --git a/main/taskprocessor.c b/main/taskprocessor.c
index cf88bb2e717e0d28140f6ee2a225dbec1bb744c5..171a0772575f8056ed8e3be81016a024519eaeea 100644
--- a/main/taskprocessor.c
+++ b/main/taskprocessor.c
@@ -220,7 +220,7 @@ static char *cli_tps_ping(struct ast_cli_entry *e, int cmd, struct ast_cli_args
 	ast_mutex_unlock(&cli_ping_cond_lock);
 	end = ast_tvnow();
 	delta = ast_tvsub(end, begin);
-	ast_cli(a->fd, "\n\t%24s ping time: %.1ld.%.6ld sec\n\n", name, delta.tv_sec, (long int)delta.tv_usec);
+	ast_cli(a->fd, "\n\t%24s ping time: %.1ld.%.6ld sec\n\n", name, (long)delta.tv_sec, (long int)delta.tv_usec);
 	ao2_ref(tps, -1);
 	return CLI_SUCCESS;	
 }
diff --git a/main/utils.c b/main/utils.c
index a34514b981183f1d35a380d569919f94e0c655e1..92da333c3f1c38c3b1668073d1c82e315de39706 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -1202,12 +1202,12 @@ static struct timeval tvfix(struct timeval a)
 {
 	if (a.tv_usec >= ONE_MILLION) {
 		ast_log(LOG_WARNING, "warning too large timestamp %ld.%ld\n",
-			a.tv_sec, (long int) a.tv_usec);
+			(long)a.tv_sec, (long int) a.tv_usec);
 		a.tv_sec += a.tv_usec / ONE_MILLION;
 		a.tv_usec %= ONE_MILLION;
 	} else if (a.tv_usec < 0) {
 		ast_log(LOG_WARNING, "warning negative timestamp %ld.%ld\n",
-			a.tv_sec, (long int) a.tv_usec);
+			(long)a.tv_sec, (long int) a.tv_usec);
 		a.tv_usec = 0;
 	}
 	return a;