diff --git a/runner.c b/runner.c
index 094886251da189d4a196208e5659c2b11c8a74ea..05c0d13e7266662a1e069734a8a1d57e6314ca6f 100644
--- a/runner.c
+++ b/runner.c
@@ -882,7 +882,7 @@ void runner_dosort ( struct runner_thread *rt , struct cell *c , int flags ) {
     int j, k, count = c->count;
     int cone, ctwo;
     int i, ind, off[8], inds[8], temp_i;
-    float shift[3];
+    // float shift[3];
     float buff[8];
     struct cell *temp_c;
     TIMER_TIC
@@ -997,36 +997,57 @@ void runner_dosort ( struct runner_thread *rt , struct cell *c , int flags ) {
     
         } /* progeny? */
         
+    /* Otherwise, just sort. */
+    // else {
+    // 
+    //     /* Loop over the different cell axes. */
+    //     for ( j = 0 ; j < 13 ; j++ ) {
+    //     
+    //         /* Has this sort array been flagged? */
+    //         if ( !( flags & (1 << j) ) )
+    //             continue;
+    //     
+    //         /* Get the shift vector. */
+    //         shift[0] = runner_shift[ 3*j + 0 ];
+    //         shift[1] = runner_shift[ 3*j + 1 ];
+    //         shift[2] = runner_shift[ 3*j + 2 ];
+    //         
+    //         /* Fill the sort array. */
+    //         finger = &c->sort[ j*(count + 1) ];
+    //         for ( k = 0 ; k < count ; k++ ) {
+    //             finger[k].i = k;
+    //             finger[k].d = parts[k].x[0]*shift[0] + parts[k].x[1]*shift[1] + parts[k].x[2]*shift[2];
+    //             }
+    //             
+    //         /* Add the sentinel. */
+    //         finger[ c->count ].d = FLT_MAX;
+    //         finger[ c->count ].i = 0;
+    //             
+    //         /* Sort descending. */
+    //         runner_dosort_ascending( finger , c->count );
+    //     
+    //         }
+    //         
+    //     }
+        
     /* Otherwise, just sort. */
     else {
     
-        /* Loop over the different cell axes. */
-        for ( j = 0 ; j < 13 ; j++ ) {
-        
-            /* Has this sort array been flagged? */
-            if ( !( flags & (1 << j) ) )
-                continue;
-        
-            /* Get the shift vector. */
-            shift[0] = runner_shift[ 3*j + 0 ];
-            shift[1] = runner_shift[ 3*j + 1 ];
-            shift[2] = runner_shift[ 3*j + 2 ];
-            
-            /* Fill the sort array. */
-            finger = &c->sort[ j*(count + 1) ];
-            for ( k = 0 ; k < count ; k++ ) {
-                finger[k].i = k;
-                finger[k].d = parts[k].x[0]*shift[0] + parts[k].x[1]*shift[1] + parts[k].x[2]*shift[2];
+        /* Fill the sort array. */
+        for ( k = 0 ; k < count ; k++ )
+            for ( j = 0 ; j < 13 ; j++ )
+                if ( flags & (1 << j) ) {
+                    c->sort[ j*(count + 1) + k].i = k;
+                    c->sort[ j*(count + 1) + k].d = parts[k].x[0]*runner_shift[ 3*j + 0 ] + parts[k].x[1]*runner_shift[ 3*j + 1 ] + parts[k].x[2]*runner_shift[ 3*j + 2 ];
+                    }
+
+        /* Add the sentinel and sort. */
+        for ( j = 0 ; j < 13 ; j++ )
+            if ( flags & (1 << j) ) {
+                c->sort[ j*(count + 1) + c->count ].d = FLT_MAX;
+                c->sort[ j*(count + 1) + c->count ].i = 0;
+                runner_dosort_ascending( &c->sort[ j*(count + 1) ] , c->count );
                 }
-                
-            /* Add the sentinel. */
-            finger[ c->count ].d = FLT_MAX;
-            finger[ c->count ].i = 0;
-                
-            /* Sort descending. */
-            runner_dosort_ascending( finger , c->count );
-        
-            }
             
         }