diff --git a/core/Communication.cc b/core/Communication.cc
index 46a5602c1c5138f98095d57cc75205b5530ec17e..e7e22e9063a95370679786082073ce1be1923c13 100644
--- a/core/Communication.cc
+++ b/core/Communication.cc
@@ -1235,7 +1235,10 @@ boolean TTCN_Communication::send_log(time_t timestamp_sec, long timestamp_usec,
   if (is_connected) {
     Text_Buf text_buf;
     text_buf.push_int(MSG_LOG);
-    text_buf.push_int(timestamp_sec);
+    int upper_int = timestamp_sec / 0xffffffff;
+    int lower_int = timestamp_sec % 0xffffffff;
+    text_buf.push_int(upper_int);
+    text_buf.push_int(lower_int);
     text_buf.push_int(timestamp_usec);
     text_buf.push_int(event_severity);
     text_buf.push_int(message_text_len);
diff --git a/mctr2/mctr/MainController.cc b/mctr2/mctr/MainController.cc
index c4e6ea841bd12264a4654df7f2ad53f8412d1779..14db39cf092c15afd1dfc5911a98df0fb2f6412d 100644
--- a/mctr2/mctr/MainController.cc
+++ b/mctr2/mctr/MainController.cc
@@ -3717,7 +3717,9 @@ void MainController::process_log(unknown_connection *conn)
 {
   Text_Buf& text_buf = *conn->text_buf;
   struct timeval tv;
-  tv.tv_sec = text_buf.pull_int().get_val();
+  int upper_int = text_buf.pull_int().get_val();
+  int lower_int = text_buf.pull_int().get_val();
+  tv.tv_sec = upper_int * 0xffffffff + lower_int;
   tv.tv_usec = text_buf.pull_int().get_val();
   char *source = mprintf("<unknown>@%s", conn->ip_addr->get_host_str());
   int severity = text_buf.pull_int().get_val();
@@ -3912,7 +3914,9 @@ void MainController::process_log(host_struct *hc)
 {
   Text_Buf& text_buf = *hc->text_buf;
   struct timeval tv;
-  tv.tv_sec = text_buf.pull_int().get_val();
+  int upper_int = text_buf.pull_int().get_val();
+  int lower_int = text_buf.pull_int().get_val();
+  tv.tv_sec = upper_int * 0xffffffff + lower_int;
   tv.tv_usec = text_buf.pull_int().get_val();
   int severity = text_buf.pull_int().get_val();
   char *message = text_buf.pull_string();
@@ -4133,7 +4137,9 @@ void MainController::process_log(component_struct *tc)
 {
   Text_Buf& text_buf = *tc->text_buf;
   struct timeval tv;
-  tv.tv_sec = text_buf.pull_int().get_val();
+  int upper_int = text_buf.pull_int().get_val();
+  int lower_int = text_buf.pull_int().get_val();
+  tv.tv_sec = upper_int * 0xffffffff + lower_int;
   tv.tv_usec = text_buf.pull_int().get_val();
   int severity = text_buf.pull_int().get_val();
   char *message = text_buf.pull_string();