 
             NewtonDone = (NewtonRate * NewtonIncrement <= NewtonTol);
 #ifndef NEWTON_UNROLL
-            PRINT("Done:%d\n", ALL(NewtonDone));
-            if (ALL (NewtonDone)) break;
+            if (NewtonDone) break;
 #else //only break if it's at the end of the unroll
-            if(ALL (NewtonDone && (NewtonIter + 1) % NewtonIter == 0)) break;
+            if(NewtonDone && (NewtonIter + 1) % NewtonIter == 0) break;
 #endif
             if (NewtonIter >= NewtonMaxit)
             {

			if (NewtonIter > 0) 
			{
				Theta = NewtonIncrement / NewtonIncrementOld;
				PRINT("Theta:%d\n", ANY(Theta >= 0.99));
				if(ANY(Theta >= 0.99)) //! Non-convergence of Newton: Theta too large
					break;
				else
					NewtonRate = Theta / (ONE - Theta);
				//Predict error at the end of Newton process 
				double NewtonPredictedErr = (NewtonIncrement * pow(Theta, (NewtonMaxit - NewtonIter - 1))) / (ONE - Theta);
				PRINT("Pred:%d\n", ANY(NewtonPredictedErr >= NewtonTol));
				if(ANY (NewtonPredictedErr >= NewtonTol)) {
					//Non-convergence of Newton: predicted error too large
					double Qnewton = fmin(10.0, NewtonPredictedErr / NewtonTol);
                    Fac = 0.8 * pow(Qnewton, -ONE/((double)(NewtonMaxit-NewtonIter)));

		sc[i] = 1.0 / (ATOL + fabs(y0[i]) * RTOL);
	}
}

#ifdef NEWTON_UNROLL
	#define NEWTON_UNROLLER	#pragma unroll NEWTON_UNROLL
