diff -aruN a/sysklogd/syslogd.c c/sysklogd/syslogd.c
--- a/sysklogd/syslogd.c	2011-10-29 04:43:01.000000000 -0700
+++ c/sysklogd/syslogd.c	2012-01-04 10:11:05.921879376 -0800
@@ -24,6 +24,7 @@
 //usage:     "\n	-O FILE		Log to FILE (default:/var/log/messages)"
 //usage:     "\n	-l N		Log only messages more urgent than prio N (1-8)"
 //usage:     "\n	-S		Smaller output"
+//usage:     "\n	-u		Log time stamps in Coordinated Universal Time (UTC)"
 //usage:	IF_FEATURE_ROTATE_LOGFILE(
 //usage:     "\n	-s SIZE		Max size (KB) before rotation (default:200KB, 0=off)"
 //usage:     "\n	-b N		N rotated logs to keep (default:1, max=99, 0=purge)"
@@ -205,6 +206,7 @@
 	OPTBIT_outfile, // -O
 	OPTBIT_loglevel, // -l
 	OPTBIT_small, // -S
+	OPTBIT_utc, // -u
 	IF_FEATURE_ROTATE_LOGFILE(OPTBIT_filesize   ,)	// -s
 	IF_FEATURE_ROTATE_LOGFILE(OPTBIT_rotatecnt  ,)	// -b
 	IF_FEATURE_REMOTE_LOG(    OPTBIT_remotelog  ,)	// -R
@@ -218,6 +220,7 @@
 	OPT_outfile     = 1 << OPTBIT_outfile ,
 	OPT_loglevel    = 1 << OPTBIT_loglevel,
 	OPT_small       = 1 << OPTBIT_small   ,
+	OPT_utc			= 1 << OPTBIT_utc	  ,
 	OPT_filesize    = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_filesize   )) + 0,
 	OPT_rotatecnt   = IF_FEATURE_ROTATE_LOGFILE((1 << OPTBIT_rotatecnt  )) + 0,
 	OPT_remotelog   = IF_FEATURE_REMOTE_LOG(    (1 << OPTBIT_remotelog  )) + 0,
@@ -226,7 +229,7 @@
 	OPT_dup         = IF_FEATURE_SYSLOGD_DUP(   (1 << OPTBIT_dup        )) + 0,
 	OPT_cfg         = IF_FEATURE_SYSLOGD_CFG(   (1 << OPTBIT_cfg        )) + 0,
 };
-#define OPTION_STR "m:nO:l:S" \
+#define OPTION_STR "m:nO:l:Su" \
 	IF_FEATURE_ROTATE_LOGFILE("s:" ) \
 	IF_FEATURE_ROTATE_LOGFILE("b:" ) \
 	IF_FEATURE_REMOTE_LOG(    "R:" ) \
@@ -649,10 +652,30 @@
 	 || msg[9] != ':' || msg[12] != ':' || msg[15] != ' '
 	) {
 		time(&now);
-		timestamp = ctime(&now) + 4; /* skip day of week */
+		if (option_mask32 & OPT_utc)
+			timestamp = asctime(gmtime(&now));
+		else
+			timestamp = asctime(localtime(&now));
+		timestamp += 4; /* skip day of week */
 	} else {
-		now = 0;
-		timestamp = msg;
+		if (option_mask32 & OPT_utc) {
+			struct tm parsed, local;
+			now = time(NULL);
+			localtime_r(&now, &local);
+			if (strptime(msg, "%h %e %T", &parsed) != NULL) {
+				parsed.tm_gmtoff	= local.tm_gmtoff;
+				parsed.tm_zone		= local.tm_zone;
+				parsed.tm_year		= local.tm_year;
+				parsed.tm_isdst		= local.tm_isdst;
+				now = mktime(&parsed);
+				timestamp = asctime(gmtime(&now)) + 4;
+			} else {
+				timestamp = msg;
+			}
+		} else {
+			now = 0;
+			timestamp = msg;
+		}
 		msg += 16;
 	}
 	timestamp[15] = '\0';
