diff --git a/MathLib/LinAlg/PETSc/PETScVector.h b/MathLib/LinAlg/PETSc/PETScVector.h
index b2de22be1720cad487cf9d479ebce4f3f16307d4..ce15cbe8f4614dd990a96d24e8191f1644bfe091 100644
--- a/MathLib/LinAlg/PETSc/PETScVector.h
+++ b/MathLib/LinAlg/PETSc/PETScVector.h
@@ -223,12 +223,19 @@ class PETScVector
         void setZero() { *this = 0.0; }
 
         /// Overloaded operator: assign
-        void operator = (const PETScVector &v_in)
+        PETScVector& operator = (const PETScVector &v_in)
         {
             if (!_v) shallowCopy(v_in);
             VecCopy(*v_in._v, *_v);
+
+            return *this;
         }
 
+        /// Disallow moving.
+        /// \todo This operator should be implemented properly when doing a
+        ///       general cleanup of all matrix and vector classes.
+        PETScVector& operator = (PETScVector &&) = delete;
+
         ///  Overloaded operator: add
         void operator += (const PETScVector& v_in)
         {