diff --git a/src/engine.c b/src/engine.c
index 272d5c0c9ff07b98befed3c68810d4c909e78c57..d842f4835c51b29f9b017867c30e12ee78df5d32 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -28,6 +28,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include <time.h>
 #include <unistd.h>
 #include <stdbool.h>
 
@@ -1464,6 +1465,29 @@ void engine_init_particles(struct engine *e) {
   e->step = -1;
 }
 
+
+/**
+ * brief Get difference in milli-seconds between two timespecs.
+ *
+ * @param start the start time.
+ * @param end the end time.
+ *
+ * @return the difference in milli-secinds.
+ */
+static double time_diff(struct timespec start, struct timespec end)
+{
+  struct timespec temp;
+  if ((end.tv_nsec-start.tv_nsec)<0) {
+    temp.tv_sec = end.tv_sec-start.tv_sec-1;
+    temp.tv_nsec = 1000000000+end.tv_nsec-start.tv_nsec;
+  } else {
+    temp.tv_sec = end.tv_sec-start.tv_sec;
+    temp.tv_nsec = end.tv_nsec-start.tv_nsec;
+  }
+  return (double)temp.tv_sec*1000.0 + (double)temp.tv_nsec*1.0E-6;
+}
+
+
 /**
  * @brief Let the #engine loose to compute the forces.
  *
@@ -1482,6 +1506,9 @@ void engine_step(struct engine *e) {
 
   TIMER_TIC2;
 
+  struct timespec time1, time2;
+  clock_gettime(CLOCK_REALTIME, &time1);
+
   /* Collect the cell data. */
   for (k = 0; k < s->nr_cells; k++)
     if (s->cells[k].nodeID == e->nodeID) {
@@ -1553,8 +1580,8 @@ void engine_step(struct engine *e) {
   if (e->nodeID == 0) {
 
     /* Print some information to the screen */
-    printf("%d %e %e %d %.3f\n", e->step, e->time, e->timeStep, updates,
-           e->wallclock_time);
+    printf("%d %e %e %d %.3f %.3f\n", e->step, e->time, e->timeStep, updates,
+           e->wallclock_time, e->wallclock_time_ticks);
     fflush(stdout);
 
     /* Write some energy statistics */
@@ -1620,7 +1647,11 @@ void engine_step(struct engine *e) {
 
   TIMER_TOC2(timer_step);
 
-  e->wallclock_time = ((double)timers[timer_count - 1]) / CPU_TPS * 1000;
+  clock_gettime(CLOCK_REALTIME, &time2);
+
+  e->wallclock_time_ticks = ((double)timers[timer_count - 1]) / CPU_TPS * 1000;
+
+  e->wallclock_time = (float) time_diff(time1, time2);
   // printParticle(e->s->parts, e->s->xparts,1000, e->s->nr_parts);
   // printParticle(e->s->parts, e->s->xparts,515050, e->s->nr_parts);
 }
diff --git a/src/engine.h b/src/engine.h
index 13c7ec40612713d3771543150763da6924144c1a..bba53092e2d77d05cc576d948b2f3b3e4cd0152f 100644
--- a/src/engine.h
+++ b/src/engine.h
@@ -147,6 +147,7 @@ struct engine {
 
   /* Wallclock time of the last time-step */
   float wallclock_time;
+  float wallclock_time_ticks;
 
   /* Force the engine to rebuild? */
   int forcerebuild;