diff --git a/src/runner.c b/src/runner.c
index 354cca2289ea15346afd83841121c36bdfcaa12b..b9c82b19b539d7fed3fbbbbad0c26b4e41cf040e 100644
--- a/src/runner.c
+++ b/src/runner.c
@@ -860,6 +860,16 @@ void runner_dokick ( struct runner *r , struct cell *c , int timer ) {
             v[2] = v_old[2] + hdt * a[2];
             u = u_old + hdt * u_dt;
             
+            /* Collect momentum */
+            mom[0] += m * v[0];
+            mom[1] += m * v[1];
+            mom[2] += m * v[2];
+
+	        /* Collect angular momentum */
+	        ang[0] += m * ( x[1]*v[2] - x[2]*v[1] );
+	        ang[1] += m * ( x[2]*v[0] - x[0]*v[2] );
+	        ang[2] += m * ( x[0]*v[1] - x[1]*v[0] );
+
             /* Collect total energy. */
             ekin += 0.5 * m * ( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );
             epot += m * u;
@@ -879,16 +889,6 @@ void runner_dokick ( struct runner *r , struct cell *c , int timer ) {
                         (x[2] - x_old[2])*(x[2] - x_old[2]) );
             dx_max = fmaxf( dx_max , dx );
 
-            /* Collect momentum */
-            mom[0] += m * v[0];
-            mom[1] += m * v[1];
-            mom[2] += m * v[2];
-
-	        /* Collect angular momentum */
-	        ang[0] += m * ( x[1]*v[2] - x[2]*v[1] );
-	        ang[1] += m * ( x[2]*v[0] - x[0]*v[2] );
-	        ang[2] += m * ( x[0]*v[1] - x[1]*v[0] );
-
             /* Update positions and energies at the half-step. */
             p->v[0] = v[0] + dt * a[0];
             p->v[1] = v[1] + dt * a[1];