diff --git a/usadelndsoc/solver.py b/usadelndsoc/solver.py
index 000450622b8641615c425efc9193e90ebf984020..6e9af73f4adc0b06117dc710fa7e684ed86546e7 100644
--- a/usadelndsoc/solver.py
+++ b/usadelndsoc/solver.py
@@ -1155,6 +1155,7 @@ def _self_consistent_Delta_f(
     mask = mask1 & mask2
 
     solver.Delta[mask] = singlet_m(Delta[mask])
+    solver.reset()
 
     if workers is not None:
         jobs = []
@@ -1406,11 +1407,11 @@ def cpr(
             # Corrector
             def constraint_fun(phi, Delta):
                 # Pseudoarclength constraint
-                Delta[phase_mask] = Delta_00[phase_mask] * np.exp(1j * phi)
+                Delta[phase_mask] = singlet(Delta_00[phase_mask]) * np.exp(1j * phi)
 
                 m = solver.mask == MASK_NONE
                 dsa = theta * np.real(
-                    np.vdot(dDelta[m], Delta[m] - state.Deltas[-1][m])
+                    np.vdot(singlet(dDelta[m]), Delta[m] - singlet(state.Deltas[-1][m]))
                 )
                 dsb = (1 - theta) * dphi * (phi - state.phis[-1])
                 dstot = dsa + dsb