diff --git a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
index caad93731ceaeae68f0e87139d9864cb2ea006df..2b6b17da92d3e4fe0fc885200ee59b12029a5ec4 100644
--- a/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
+++ b/src/OpenFOAM/meshes/polyMesh/globalMeshData/globalPoints.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -90,6 +90,11 @@ Foam::labelPairList Foam::globalPoints::addSendTransform
     const labelPairList& info
 ) const
 {
+    scalar tol = refCast<const coupledPolyPatch>
+    (
+        mesh_.boundaryMesh()[patchI]
+    ).matchTolerance();
+
     labelPairList sendInfo(info.size());
 
     forAll(info, i)
@@ -111,7 +116,8 @@ Foam::labelPairList Foam::globalPoints::addSendTransform
             (
                 globalIndexAndTransform::transformIndex(info[i]),
                 patchI,
-                true           // patchI is sending side
+                true,           // patchI is sending side
+                tol             // tolerance for comparison
             )
         );
     }
diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H
index 408b1f2d32d6373c94b5135f0730b504fd6ad78f..7cb4bab495609f9e0ce649d8bb996f21a944af3f 100644
--- a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H
+++ b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransform.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -195,7 +195,8 @@ public:
         (
             const label transformIndex,
             const label patchI,
-            const bool isSendingSide = true
+            const bool isSendingSide = true,
+            const scalar tol = SMALL
         ) const;
 
         //- Combine two transformIndices
diff --git a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H
index bb72f8d43dc4bc8a0dc5b5f9ef44b0e0156d7977..9227e6a990baf0c6b87c81a892382a2b52b52d0d 100644
--- a/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H
+++ b/src/OpenFOAM/primitives/globalIndexAndTransform/globalIndexAndTransformI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -190,7 +190,8 @@ Foam::label Foam::globalIndexAndTransform::addToTransformIndex
 (
     const label transformIndex,
     const label patchI,
-    const bool isSendingSide
+    const bool isSendingSide,
+    const scalar tol
 ) const
 {
     const Pair<label>& transSign = patchTransformSign_[patchI];
@@ -228,21 +229,49 @@ Foam::label Foam::globalIndexAndTransform::addToTransformIndex
             }
             else if (sign == permutation[matchTransI])
             {
-                FatalErrorIn
-                (
-                    "Foam::label "
-                    "Foam::globalIndexAndTransform::addToTransformIndex\n"
-                    "(\n"
-                        "const label,\n"
-                        "const label,\n"
-                        "const bool\n"
-                    ") const\n"
-                )   << "More than one patch accessing the same transform "
-                    << "but not of the same sign." << endl
-                    << "patch:" << mesh_.boundaryMesh()[patchI].name()
-                    << " transform:" << matchTransI << " sign:" << sign
-                    << "  current transforms:" << permutation
-                    << exit(FatalError);
+                // This is usually illegal. The only exception is for points
+                // on the axis of a 180 degree cyclic wedge when the
+                // transformation is going to be (-1 0 0 0 -1 0 0 0 +1)
+                // (or a different permutation but always two times -1 and
+                // once +1)
+                bool antiCyclic = false;
+
+                const vectorTensorTransform& vt = transforms_[matchTransI];
+                if (mag(vt.t()) < SMALL && vt.hasR())
+                {
+                    const tensor& R = vt.R();
+                    scalar sumDiag = tr(R);
+                    scalar sumMagDiag = mag(R.xx())+mag(R.yy())+mag(R.zz());
+
+                    if (mag(sumMagDiag-3) < tol && mag(sumDiag+1) < tol)
+                    {
+                        antiCyclic = true;
+                    }
+                }
+
+                if (antiCyclic)
+                {
+                    // 180 degree rotational. Reset transformation.
+                    permutation[matchTransI] = 0;
+                }
+                else
+                {
+                    FatalErrorIn
+                    (
+                        "Foam::label "
+                        "Foam::globalIndexAndTransform::addToTransformIndex\n"
+                        "(\n"
+                            "const label,\n"
+                            "const label,\n"
+                            "const bool\n"
+                        ") const\n"
+                    )   << "More than one patch accessing the same transform "
+                        << "but not of the same sign." << endl
+                        << "patch:" << mesh_.boundaryMesh()[patchI].name()
+                        << " transform:" << matchTransI << " sign:" << sign
+                        << "  current transforms:" << permutation
+                        << exit(FatalError);
+                }
             }
             else
             {
diff --git a/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C b/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C
index fc0a283d754e9a2b48899669d9f418f26a31f772..fe1e6a998aea64831e68d502dfebace5ad05c4d4 100644
--- a/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C
+++ b/src/sampling/sampledSurface/writers/nastran/nastranSurfaceWriterTemplates.C
@@ -201,6 +201,7 @@ void Foam::nastranSurfaceWriter::writeTemplate
                 {
                     v += values[f[fptI]];
                 }
+                v /= f.size();
 
                 writeFaceValue(nasFieldName, v, ++n, os);
             }
diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
index 7237f30307fc3baa38d0c9fba66521e9a4a084c1..e15fea1f66b691fb9c46a7de7e894e7ef73e2b68 100644
--- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/greyDiffusiveRadiation/greyDiffusiveRadiationMixedFvPatchScalarField.C
@@ -197,7 +197,14 @@ updateCoeffs()
 
     const vector& myRayId = dom.IRay(rayId).d();
 
-    const scalarField& Ir = dom.Qin().boundaryField()[patchI];
+    // Use updated Ir while iterating over rays
+    // avoids to used lagged Qin
+    scalarField Ir = dom.IRay(0).Qin().boundaryField()[patchI];
+
+    for (label rayI=1; rayI < dom.nRay(); rayI++)
+    {
+        Ir += dom.IRay(rayI).Qin().boundaryField()[patchI];
+    }
 
     forAll(Iw, faceI)
     {
diff --git a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
index e6e7b4b225915b3254a3c5ee4c6bcf40ef7fdab2..0bce57efeb26dc3b7a6ec4eca577372e26af2fd1 100644
--- a/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
+++ b/src/thermophysicalModels/radiationModels/derivedFvPatchFields/wideBandDiffusiveRadiation/wideBandDiffusiveRadiationMixedFvPatchScalarField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -187,7 +187,9 @@ updateCoeffs()
     radiativeIntensityRay& ray =
         const_cast<radiativeIntensityRay&>(dom.IRay(rayId));
 
-    ray.Qr().boundaryField()[patchI] += Iw*(n & ray.dAve());
+    const scalarField nAve(n & ray.dAve());
+
+    ray.Qr().boundaryField()[patchI] += Iw*nAve;
 
     const scalarField Eb
     (
@@ -196,23 +198,20 @@ updateCoeffs()
 
     scalarField temissivity = emissivity();
 
-    forAll(Iw, faceI)
-    {
-        scalar Ir = 0.0;
-        for (label rayI=0; rayI < dom.nRay(); rayI++)
-        {
-            const vector& d = dom.IRay(rayI).d();
+    scalarField& Qem = ray.Qem().boundaryField()[patchI];
+    scalarField& Qin = ray.Qin().boundaryField()[patchI];
 
-            const scalarField& IFace =
-                dom.IRay(rayI).ILambda(lambdaId).boundaryField()[patchI];
+    // Use updated Ir while iterating over rays
+    // avoids to used lagged Qin
+    scalarField Ir = dom.IRay(0).Qin().boundaryField()[patchI];
 
-            if ((-n[faceI] & d) < 0.0) // qin into the wall
-            {
-                const vector& dAve = dom.IRay(rayI).dAve();
-                Ir = Ir + IFace[faceI]*mag(n[faceI] & dAve);
-            }
-        }
+    for (label rayI=1; rayI < dom.nRay(); rayI++)
+    {
+        Ir += dom.IRay(rayI).Qin().boundaryField()[patchI];
+    }
 
+    forAll(Iw, faceI)
+    {
         const vector& d = dom.IRay(rayId).d();
 
         if ((-n[faceI] & d) > 0.0)
@@ -222,9 +221,12 @@ updateCoeffs()
             valueFraction()[faceI] = 1.0;
             refValue()[faceI] =
                 (
-                    Ir*(1.0 - temissivity[faceI])
+                    Ir[faceI]*(1.0 - temissivity[faceI])
                   + temissivity[faceI]*Eb[faceI]
                 )/pi;
+
+            // Emmited heat flux from this ray direction
+            Qem[faceI] = refValue()[faceI]*nAve[faceI];
         }
         else
         {
@@ -232,6 +234,9 @@ updateCoeffs()
             valueFraction()[faceI] = 0.0;
             refGrad()[faceI] = 0.0;
             refValue()[faceI] = 0.0; //not used
+
+            // Incident heat flux on this ray direction
+            Qin[faceI] = Iw[faceI]*nAve[faceI];
         }
     }