diff --git a/src/finiteArea/faMesh/faMesh.C b/src/finiteArea/faMesh/faMesh.C
index 5703a8ad3d60b29506e96ec85e768f8485c2035d..87ad1d36406e9bead768a2d485f1b095d44c5a49 100644
--- a/src/finiteArea/faMesh/faMesh.C
+++ b/src/finiteArea/faMesh/faMesh.C
@@ -284,11 +284,17 @@ bool Foam::faMesh::init(const bool doInit)
     // Calculate the geometry for the patches (transformation tensors etc.)
     boundary_.calcGeometry();
 
-    // Ensure area information is properly synchronised
+    // Ensure processor/processor information is properly synchronised
     if (Pstream::parRun())
     {
         const_cast<areaVectorField&>(areaCentres()).boundaryFieldRef()
             .evaluateCoupled<processorFaPatch>();
+
+        // This roughly corresponds to what OpenFOAM-v2112 (and earlier) had,
+        // but should nominally be unnecessary.
+        //
+        /// const_cast<areaVectorField&>(faceAreaNormals()).boundaryFieldRef()
+        ///     .evaluateCoupled<processorFaPatch>();
     }
 
     return false;
diff --git a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C
index c58f99589179a819d28dd670370e9ac134dc3e92..c659ad3f4f06bb6c2f0d3c25dc56de9ca4cba098 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C
+++ b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.C
@@ -6,6 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2016-2017 Wikki Ltd
+    Copyright (C) 2022 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -94,20 +95,18 @@ Foam::tmp<Foam::edgeScalarField> Foam::faNVDscheme<Type,NVDweight>::weights
 
     forAll(weights, edge)
     {
-        vector d(Zero);
+        vector d(c[neighbour[edge]] - c[owner[edge]]);
 
         if (edgeFlux_[edge] > 0)
         {
-            d = c[neighbour[edge]] - c[owner[edge]];
-            d -= n[owner[edge]]*(n[owner[edge]]&d);
-            d /= mag(d)/mesh.edgeInterpolation::lPN().internalField()[edge];
+            d.removeCollinear(n[owner[edge]]);
         }
         else
         {
-            d = c[neighbour[edge]] - c[owner[edge]];
-            d -= n[neighbour[edge]]*(n[neighbour[edge]]&d);
-            d /= mag(d)/mesh.edgeInterpolation::lPN().internalField()[edge];
+            d.removeCollinear(n[neighbour[edge]]);
         }
+        d.normalise();
+        d *= mesh.edgeInterpolation::lPN().internalField()[edge];
 
         weights[edge] =
             this->weight
@@ -177,20 +176,18 @@ Foam::tmp<Foam::edgeScalarField> Foam::faNVDscheme<Type,NVDweight>::weights
 
             forAll(pWeights, edgeI)
             {
-                vector d(Zero);
+                vector d(CN[edgeI] - CP[edgeI]);
 
                 if (pEdgeFlux[edgeI] > 0)
                 {
-                    d = CN[edgeI] - CP[edgeI];
-                    d -= nP[edgeI]*(nP[edgeI]&d);
-                    d /= mag(d)/pLPN[edgeI];
+                    d.removeCollinear(nP[edgeI]);
                 }
                 else
                 {
-                    d = CN[edgeI] - CP[edgeI];
-                    d -= nN[edgeI]*(nN[edgeI]&d);
-                    d /= mag(d)/pLPN[edgeI];
+                    d.removeCollinear(nN[edgeI]);
                 }
+                d.normalise();
+                d *= pLPN[edgeI];
 
                 pWeights[edgeI] =
                     this->weight
diff --git a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H
index fad7dbe9712664aba31ab6dcc3d5fa4efa94ca68..67270a7f12810ecea273a057b371b36ea9de2e97 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H
+++ b/src/finiteArea/interpolation/edgeInterpolation/schemes/NVDscheme/faNVDscheme.H
@@ -46,8 +46,8 @@ SourceFiles
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef faNVDscheme_H
-#define faNVDscheme_H
+#ifndef Foam_faNVDscheme_H
+#define Foam_faNVDscheme_H
 
 #include "edgeInterpolationScheme.H"
 
@@ -66,17 +66,13 @@ class faNVDscheme
     public edgeInterpolationScheme<Type>,
     public NVDweight
 {
-
 protected:
 
-    // Protected data
+    // Protected Data
 
         const edgeScalarField& edgeFlux_;
 
-
-private:
-
-    // Private Member Functions
+    // Protected Member Functions
 
         //- No copy construct
         faNVDscheme(const faNVDscheme&) = delete;