diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
index 7247be1bc1585493954e3fc5a5589d2e9d5d3a4b..e0c086be69b49f61b365eddc79b4a278fad46705 100644
--- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h
@@ -9,6 +9,7 @@
 
 #pragma once
 
+#include "MeshLib/Elements/Element.h"
 #include "NumLib/DOF/LocalToGlobalIndexMap.h"
 #include "NumLib/Fem/ShapeMatrixPolicy.h"
 #include "ProcessLib/Utils/InitShapeMatrices.h"
@@ -44,7 +45,8 @@ public:
         : _integration_method(integration_order),
           _shape_matrices(initShapeMatrices<ShapeFunction, ShapeMatricesType,
                                             IntegrationMethod, GlobalDim>(
-              e, is_axially_symmetric, _integration_method))
+              e, is_axially_symmetric, _integration_method)),
+          _element(e)
     {
     }
 
@@ -54,6 +56,7 @@ protected:
                 Eigen::aligned_allocator<
                     typename ShapeMatricesType::ShapeMatrices>> const
         _shape_matrices;
+    MeshLib::Element const& _element;
 };
 
 }  // namespace ProcessLib
diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
index 0683ed93eafe8ada9f3c9e4b11caa63404596de9..23f74a4c4e70fb9870392f11e9fc07fce3d563cd 100644
--- a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h
@@ -11,7 +11,9 @@
 
 #include "GenericNaturalBoundaryConditionLocalAssembler.h"
 #include "NumLib/DOF/DOFTableUtil.h"
+#include "NumLib/Fem/ShapeMatrixPolicy.h"
 #include "ProcessLib/Parameter/Parameter.h"
+#include "ProcessLib/Utils/InitShapeMatrices.h"
 
 namespace ProcessLib
 {
@@ -23,6 +25,7 @@ class NeumannBoundaryConditionLocalAssembler final
 {
     using Base = GenericNaturalBoundaryConditionLocalAssembler<
         ShapeFunction, IntegrationMethod, GlobalDim>;
+    using ShapeMatricesType = ShapeMatrixPolicyType<ShapeFunction, GlobalDim>;
 
 public:
     /// The neumann_bc_value factor is directly integrated into the local
@@ -53,11 +56,20 @@ public:
         SpatialPosition pos;
         pos.setElementID(id);
 
+        using FemType =
+            NumLib::TemplateIsoparametric<ShapeFunction, ShapeMatricesType>;
+        FemType fe(
+             static_cast<const typename ShapeFunction::MeshElement&>(Base::_element));
+
         for (unsigned ip = 0; ip < n_integration_points; ip++)
         {
             pos.setIntegrationPoint(ip);
             auto const& sm = Base::_shape_matrices[ip];
             auto const& wp = Base::_integration_method.getWeightedPoint(ip);
+
+            MathLib::TemplatePoint<double, 3> coords_ip(fe.interpolateCoordinates(sm.N));
+            pos.setCoordinates(coords_ip);
+
             _local_rhs.noalias() += sm.N * _neumann_bc_parameter(t, pos)[0] *
                                     sm.detJ * wp.getWeight() *
                                     sm.integralMeasure;