             continue;
         }
 
+#if 0
         // This direction still has points.
         // We can identify the highest threadId / lowest rotation value j
         uint32_t computer = __ffs( any_point_found ) - 1;
+#else
+        if( point_found == false ) j = 8;
+        j = min( __shfl_xor( j, 4 );
+        j = min( __shfl_xor( j, 2 );
+        j = min( __shfl_xor( j, 1 );
+        assert( j < 8 );
+#endif
 
         found = LOW_FLOW;
 
         float winnerSize = 0.0f;
+#if 0
         if( threadIdx.x == computer ) {
+#else
+        if( threadIdx.x == j ) {
+#endif
             //
             // The whole if/else block is identical for all j.
             // No reason to do it more than once. Astonishingly,

            // point, and has its coordinates in new_point
            point_found = true;
        }

        uint32_t any_point_found = __ballot( point_found );

        if( not any_point_found ) {

        assert( found == LOW_FLOW || found == FOUND_NEXT || found == CONVEXITY_LOST );

        // both FOUND_NEXT and CONVEXITY_LOST are > LOW_FLOW
        found = (StopCondition)max( (int)found, __shfl_xor( (int)found, 4 ) );
        found = (StopCondition)max( (int)found, __shfl_xor( (int)found, 2 ) );
        found = (StopCondition)max( (int)found, __shfl_xor( (int)found, 1 ) );

        assert( found == FOUND_NEXT || found == CONVEXITY_LOST );

