diff --git a/usadelndsoc/solver.py b/usadelndsoc/solver.py
index c8e2783205d4fd9956a58b2f38d5ec545a984d03..04c81ea6803ac082d16dd810f20a1326fc80a56e 100644
--- a/usadelndsoc/solver.py
+++ b/usadelndsoc/solver.py
@@ -394,12 +394,12 @@ class Solver:
                     minw = max(1e-6, 0.25 * abs_re_w)
                     steps = [0.75**k for k in range(50) if 0.75**k > abs_re_w / 5]
                     try:
+                        self._M = M = None
                         for domega in steps:
                             _log_solve.debug(f"  Continuation step {domega}")
                             self._core.omega = old_omega + domega * (
                                 1 if np.real(old_omega) >= 0 else -1
                             )
-                            self._M = M = None
                             self._Phi[...] = self._solve(
                                 eval_rhs,
                                 eval_jac_mul,
@@ -421,7 +421,8 @@ class Solver:
                     if np.isnan(self._Phi).any():
                         break
                     _log_solve.debug(f"    continuation step 0")
-                self._M = M = None
+                else:
+                    self._M = M = None
                 return self._solve(
                     eval_rhs,
                     eval_jac_mul,