diff --git a/NumLib/ODESolver/PETScNonlinearSolver.cpp b/NumLib/ODESolver/PETScNonlinearSolver.cpp
index a435e83b98e0884e96fcac5720314b40e1ee8ff1..eda70e72af287a6abf5780172d666def061ddfbf 100644
--- a/NumLib/ODESolver/PETScNonlinearSolver.cpp
+++ b/NumLib/ODESolver/PETScNonlinearSolver.cpp
@@ -48,6 +48,7 @@ PetscErrorCode updateResidual(SNES /*snes*/, Vec x, Vec petsc_r,
     context->system->getResidual(*context->x[context->process_id],
                                  *context->x_prev[context->process_id],
                                  *context->r);
+    context->r->finalizeAssembly();
     context->J->finalizeAssembly();
 
     context->system->getJacobian(*context->J);