diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
index a816af06e72013c7cd2a8ba22a8c7560f87221a1..adf426faa1c4a4cc8919aa06c7cdb70ee5dc50cc 100644
--- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
+++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C
@@ -669,21 +669,22 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update()
     // Reset some values
     totalArea_ = 0;
     nFaces_ = 0;
+    bool checkEmptyFaces = true;
 
     switch (regionType_)
     {
         case stFaceZone:
         {
-            // Raises warning or error internally
+            // Raises warning or error internally, don't check again
             setFaceZoneFaces();
-            if (!nFaces_) return true;
+            checkEmptyFaces = false;
             break;
         }
         case stPatch:
         {
-            // Raises warning or error internally
+            // Raises warning or error internally, don't check again
             setPatchFaces();
-            if (!nFaces_) return true;
+            checkEmptyFaces = false;
             break;
         }
         case stObject:
@@ -704,10 +705,12 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update()
 
     if (nFaces_)
     {
-        // Appears to be successful - reset warnings counter
-        nWarnings_ = 0u;
+        // Appears to be successful
+        needsUpdate_ = false;
+        totalArea_ = totalArea();   // Update the area
+        nWarnings_ = 0u;            // Reset the warnings counter
     }
-    else
+    else if (checkEmptyFaces)
     {
         // Raise warning or error
         refPtr<OSstream> os;
@@ -756,18 +759,14 @@ bool Foam::functionObjects::fieldValues::surfaceFieldValue::update()
                     << "... suppressing further warnings." << nl;
             }
         }
-        return true;
     }
 
-    totalArea_ = totalArea();
-
     Log << "    total faces   = " << nFaces_ << nl
         << "    total area    = " << totalArea_ << nl
         << endl;
 
     writeFileHeader(file());
 
-    needsUpdate_ = false;
     return true;
 }