diff --git a/NumLib/ODESolver/NonlinearSolver.cpp b/NumLib/ODESolver/NonlinearSolver.cpp
index a84376c2394b09b717209ebb20b3a11ac2333e69..59aac171411e64171a966e955d2f3492727e4382 100644
--- a/NumLib/ODESolver/NonlinearSolver.cpp
+++ b/NumLib/ODESolver/NonlinearSolver.cpp
@@ -375,7 +375,7 @@ NonlinearSolverStatus NonlinearSolver<NonlinearSolverTag::Newton>::solve(
         minus_delta_x.setZero();
 
         timer_dirichlet.start();
-        sys.applyKnownSolutionsNewton(J, res, minus_delta_x);
+        sys.applyKnownSolutionsNewton(J, res, *x[process_id], minus_delta_x);
         time_dirichlet += timer_dirichlet.elapsed();
         INFO("[time] Applying Dirichlet BCs took {:g} s.", time_dirichlet);
 
diff --git a/NumLib/ODESolver/NonlinearSystem.h b/NumLib/ODESolver/NonlinearSystem.h
index 02d2d2793805fe0530ee0a113ff6fed10d05723f..e3b20f6e12d2a41aea49260afcbf3a0b26a94e16 100644
--- a/NumLib/ODESolver/NonlinearSystem.h
+++ b/NumLib/ODESolver/NonlinearSystem.h
@@ -75,7 +75,7 @@ public:
     //! \f$ \mathit{Jac} \cdot (-\Delta x) = \mathit{res} \f$.
     //! \pre computeKnownSolutions() must have been called before.
     virtual void applyKnownSolutionsNewton(
-        GlobalMatrix& Jac, GlobalVector& res,
+        GlobalMatrix& Jac, GlobalVector& res, GlobalVector const& x,
         GlobalVector& minus_delta_x) const = 0;
 
     //! Apply known solutions to the linearized equation system
diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
index e618773be5c518e8467a63d8556474d79aabe8fa..08d086c07e8f1992cf1be8bb7913155491006759 100644
--- a/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
+++ b/NumLib/ODESolver/TimeDiscretizedODESystem.cpp
@@ -133,6 +133,7 @@ void TimeDiscretizedODESystem<
 void TimeDiscretizedODESystem<ODESystemTag::FirstOrderImplicitQuasilinear,
                               NonlinearSolverTag::Newton>::
     applyKnownSolutionsNewton(GlobalMatrix& Jac, GlobalVector& res,
+                              GlobalVector const& x,
                               GlobalVector& minus_delta_x) const
 {
     if (!_known_solutions)
diff --git a/NumLib/ODESolver/TimeDiscretizedODESystem.h b/NumLib/ODESolver/TimeDiscretizedODESystem.h
index 46dd959689fa3d532fcb08c3904ec13db048179b..66dfc810002084a7413cec457f44aef3aec4699a 100644
--- a/NumLib/ODESolver/TimeDiscretizedODESystem.h
+++ b/NumLib/ODESolver/TimeDiscretizedODESystem.h
@@ -106,6 +106,7 @@ public:
     void applyKnownSolutions(GlobalVector& x) const override;
 
     void applyKnownSolutionsNewton(GlobalMatrix& Jac, GlobalVector& res,
+                                   GlobalVector const& x,
                                    GlobalVector& minus_delta_x) const override;
 
     void applyKnownSolutionsPETScSNES(GlobalMatrix& Jac, GlobalVector& res,