diff --git a/src/petsc4Foam/utils/petscWrappedVector.H b/src/petsc4Foam/utils/petscWrappedVector.H
index 3189108d397c42320eb072c6690e4834ccdc56de..3a9a4a6d1d51dd1ecf676e6e82914825a82f5b0d 100644
--- a/src/petsc4Foam/utils/petscWrappedVector.H
+++ b/src/petsc4Foam/utils/petscWrappedVector.H
@@ -60,6 +60,9 @@ class PetscWrappedVector
         //- The PETSc vector
         Vec vec_;
 
+        //- Call VecResetArray on destruction?
+        bool reset_;
+
 
     // Private Member Functions
 
@@ -77,6 +80,7 @@ class PetscWrappedVector
                 vec_,
                 reinterpret_cast<scalar*>(const_cast<T*>(list.cdata()))
             );
+            reset_ = true;
         }
 
         //- Wrap an OpenFOAM list of values as a PETSc vector
@@ -96,8 +100,22 @@ class PetscWrappedVector
                 reinterpret_cast<scalar*>(const_cast<T*>(list.cdata())),
                 &vec_
             );
+            reset_ = false;
         }
 
+
+    // Constructors
+
+        //- Default construct
+        PetscWrappedVector()
+        :
+            vec_(),
+            reset_(false)
+        {}
+
+
+    // Generated Methods
+
         //- No copy construct
         PetscWrappedVector(const PetscWrappedVector&) = delete;
 
@@ -116,31 +134,19 @@ public:
             Mat mat
         )
         :
-            vec_()
+            PetscWrappedVector()
         {
             createImpl(list, mat);
         }
 
         //- Wrap an OpenFOAM list of values as a PETSc vector
-        PetscWrappedVector
+        explicit PetscWrappedVector
         (
             const UList<scalar>& list,
             MPI_Comm comm = PETSC_COMM_WORLD
         )
         :
-            vec_()
-        {
-            createImpl(list, comm);
-        }
-
-        //- Wrap an OpenFOAM list of values as a PETSc vector
-        PetscWrappedVector
-        (
-            const UList<vector>& list,
-            MPI_Comm comm = PETSC_COMM_WORLD
-        )
-        :
-            vec_()
+            PetscWrappedVector()
         {
             createImpl(list, comm);
         }
@@ -149,6 +155,10 @@ public:
     //- Destructor
     ~PetscWrappedVector()
     {
+        if (reset_)
+        {
+            VecResetArray(vec_);
+        }
         VecDestroy(&vec_);
     }