diff --git a/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.C b/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.C
index 7dfdcbf..31429ff 100644
--- a/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.C
+++ b/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.C
@@ -40,10 +40,10 @@ void Foam::fvCellSet::setV()
         V_ += mesh_.V()[cells[i]];
     }
     reduce(V_, sumOp<scalar>());
+    nCells_ = returnReduce(cells.size(), sumOp<label>());
 
     Info<< indent
-        << "- selected " << returnReduce(cells.size(), sumOp<label>())
-        << " cell(s) with volume " << V_ << endl;
+        << "- selected " << nCells_ << " cell(s) with volume " << V_ << endl;
 
     Info<< decrIndent;
 }
@@ -60,8 +60,8 @@ void Foam::fvCellSet::writeFileHeader
     wf.writeCommented(file, "Selection");
     file<< setw(1) << ':' << setw(1) << ' '
         << selectionTypeNames[selectionType()] << " " << cellSetName() << endl;
-    wf.writeHeaderValue(file, "Cells", nCells());
-    wf.writeHeaderValue(file, "Volume", V());
+    wf.writeHeaderValue(file, "Cells", nCells_);
+    wf.writeHeaderValue(file, "Volume", V_);
 }
 
 
@@ -71,7 +71,8 @@ Foam::fvCellSet::fvCellSet(const fvMesh& mesh)
 :
     polyCellSet(mesh),
     mesh_(mesh),
-    V_(gSum(mesh_.V()))
+    V_(gSum(mesh_.V())),
+    nCells_(returnReduce(cells().size(), sumOp<label>()))
 {}
 
 
@@ -79,7 +80,8 @@ Foam::fvCellSet::fvCellSet(const fvMesh& mesh, const dictionary& dict)
 :
     polyCellSet(mesh, dict),
     mesh_(mesh),
-    V_(NaN)
+    V_(NaN),
+    nCells_(-1)
 {
     setV();
 }
diff --git a/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.H b/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.H
index 0647d07..8157a83 100644
--- a/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.H
+++ b/src/finiteVolume/fvMesh/fvCellSet/fvCellSet.H
@@ -95,6 +95,9 @@ class fvCellSet
         //- Sum of cell volumes
         mutable scalar V_;
 
+        //- Number of cells
+        mutable label nCells_;
+
 
     // Private functions
 
