diff --git a/src/engine.c b/src/engine.c
index 4c3fead936eee85af2a82ef12cf6ef49f3a25e6d..beb9cdc4217b1b47998b2e2c1943a66220cce6ff 100644
--- a/src/engine.c
+++ b/src/engine.c
@@ -281,15 +281,15 @@ void engine_map_kick_first ( struct cell *c , void *data ) {
     else {
     
         /* Init with the first non-null child. */
-        for ( k = 0 ; c->progeny[k] == NULL ; k++ );
-        dt_min = c->progeny[k]->dt_min;
-        dt_max = c->progeny[k]->dt_max;
-        h_max = c->progeny[k]->h_max;
-        dx_max = c->progeny[k]->dx_max;
+        dt_min = FLT_MAX;
+        dt_max = 0.0f;
+        h_max = 0.0f;
+        dx_max = 0.0f;
         
         /* Loop over the remaining progeny. */
-        for ( k += 1 ; k < 8 ; k++ )
+        for ( k = 0 ; k < 8 ; k++ )
             if ( c->progeny[k] != NULL ) {
+                engine_map_kick_first( c->progeny[k] , e );
                 dt_min = fminf( dt_min , c->progeny[k]->dt_min );
                 dt_max = fmaxf( dt_max , c->progeny[k]->dt_max );
                 h_max = fmaxf( h_max , c->progeny[k]->h_max );