diff --git a/Solver/linearSystemPETSc.cpp b/Solver/linearSystemPETSc.cpp
index cfadd327c04db5d66117f18d5c04217cb3548fe5..dad32f072100b375577f7b3fab599b8bbc2167cc 100644
--- a/Solver/linearSystemPETSc.cpp
+++ b/Solver/linearSystemPETSc.cpp
@@ -262,6 +262,8 @@ void linearSystemPETScBlockDouble::preAllocateEntries()
 void linearSystemPETScBlockDouble::zeroMatrix()
 {
   if (_isAllocated && _entriesPreAllocated) {
+    MatAssemblyBegin(_a, MAT_FINAL_ASSEMBLY);
+    MatAssemblyEnd(_a, MAT_FINAL_ASSEMBLY);
     MatZeroEntries(_a);
   }
 }
@@ -269,6 +271,8 @@ void linearSystemPETScBlockDouble::zeroMatrix()
 void linearSystemPETScBlockDouble::zeroRightHandSide()
 {
   if (_isAllocated) {
+    VecAssemblyBegin(_b);
+    VecAssemblyEnd(_b);
     VecZeroEntries(_b);
   }
 }
@@ -276,6 +280,8 @@ void linearSystemPETScBlockDouble::zeroRightHandSide()
 void linearSystemPETScBlockDouble::zeroSolution()
 {
   if (_isAllocated) {
+    VecAssemblyBegin(_x);
+    VecAssemblyEnd(_x);
     VecZeroEntries(_x);
   }
 }