diff --git a/core/Communication.cc b/core/Communication.cc
index e7e22e9063a95370679786082073ce1be1923c13..890fd34725c4ef11a46b97a989792a6093613263 100644
--- a/core/Communication.cc
+++ b/core/Communication.cc
@@ -860,7 +860,10 @@ void TTCN_Communication::send_create_req(const char *component_type_module,
   text_buf.push_string(component_name);
   text_buf.push_string(component_location);
   text_buf.push_int(is_alive ? 1 : 0);
-  text_buf.push_int(testcase_start_time.tv_sec);
+  int upper_int = testcase_start_time.tv_sec / 0xffffffff;
+  int lower_int = testcase_start_time.tv_sec % 0xffffffff;
+  text_buf.push_int(upper_int);
+  text_buf.push_int(lower_int);
   text_buf.push_int(testcase_start_time.tv_usec);
   send_message(text_buf);
 }
@@ -1405,7 +1408,9 @@ void TTCN_Communication::process_create_ptc()
   qualified_name current_testcase;
   incoming_buf.pull_qualified_name(current_testcase);
   timeval testcase_start_time;
-  testcase_start_time.tv_sec = incoming_buf.pull_int().get_val();
+  int upper_int = incoming_buf.pull_int().get_val();
+  int lower_int = incoming_buf.pull_int().get_val();
+  testcase_start_time.tv_sec = upper_int * 0xffffffff + lower_int;
   testcase_start_time.tv_usec = incoming_buf.pull_int().get_val();
   incoming_buf.cut_message();
 
diff --git a/mctr2/mctr/MainController.cc b/mctr2/mctr/MainController.cc
index 6e47db1064d0d98f238dbd7a4d2d474ce02b68d8..a5fd3c137f90342d96ea1054162ebfe76f82629d 100644
--- a/mctr2/mctr/MainController.cc
+++ b/mctr2/mctr/MainController.cc
@@ -3267,7 +3267,10 @@ void MainController::send_create_ptc(host_struct *hc,
   text_buf.push_string(component_name);
   text_buf.push_int(is_alive ? 1 : 0);
   text_buf.push_qualified_name(current_testcase);
-  text_buf.push_int(testcase_start_time.tv_sec);
+  int upper_int = testcase_start_time.tv_sec / 0xffffffff;
+  int lower_int = testcase_start_time.tv_sec % 0xffffffff;
+  text_buf.push_int(upper_int);
+  text_buf.push_int(lower_int);
   text_buf.push_int(testcase_start_time.tv_usec);
   send_message(hc->hc_fd, text_buf);
 }
@@ -4171,7 +4174,9 @@ void MainController::process_create_req(component_struct *tc)
     component_location = NULL;
   }
   boolean is_alive = text_buf.pull_int().get_val();
-  testcase_start_time.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();
+  testcase_start_time.tv_sec = upper_int * 0xffffffff + lower_int;
   testcase_start_time.tv_usec = text_buf.pull_int().get_val();
 
   host_struct *host = choose_ptc_location(component_type.definition_name,