diff --git a/src/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C b/src/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C
index 8177c02efa1ca16544834f8eb5b555c94887d4a9..c2a3511485582bc9d17414aea39e83b5fcf157c3 100644
--- a/src/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C
+++ b/src/fieldSources/basicSource/rotorDiskSource/rotorDiskSource.C
@@ -252,7 +252,7 @@ void Foam::rotorDiskSource::createCoordinateSystem()
     {
         case gmAuto:
         {
-            // determine rotation origin
+            // determine rotation origin (cell volume weighted)
             scalar sumV = 0.0;
             const scalarField& V = mesh_.V();
             const vectorField& C = mesh_.C();
@@ -262,6 +262,8 @@ void Foam::rotorDiskSource::createCoordinateSystem()
                 sumV += V[cellI];
                 origin += V[cellI]*C[cellI];
             }
+            reduce(origin, sumOp<vector>());
+            reduce(sumV, sumOp<scalar>());
             origin /= sumV;
 
             // determine first radial vector
@@ -277,6 +279,8 @@ void Foam::rotorDiskSource::createCoordinateSystem()
                     magR = mag(test);
                 }
             }
+            reduce(dx1, maxMagSqrOp<vector>());
+            magR = mag(dx1);
 
             // determine second radial vector and cross to determine axis
             forAll(cells_, i)
@@ -292,6 +296,7 @@ void Foam::rotorDiskSource::createCoordinateSystem()
                     }
                 }
             }
+            reduce(axis, maxMagSqrOp<vector>());
             axis /= mag(axis);
 
             // axis direction is somewhat arbitrary - check if user needs