diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
index 9b8ea42968dd363cf018c8974911efc434715e77..6a6c69ee43f1fea10e6f3df4d36f38d39fbe1107 100644
--- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
+++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp
@@ -94,6 +94,7 @@ void getEssentialBCValuesLocal(
         if (global_index >= 0)
         {
             pos.setNodeID(id);
+            pos.setCoordinates(*node);
             bc_values.ids.emplace_back(global_index);
             bc_values.values.emplace_back(parameter(t, pos).front());
         }
diff --git a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
index 683f0ece125784de5a1399d13355a020ae0cba2b..b10ad967323fd6508d8c69e228e1cc1829d27d0b 100644
--- a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
+++ b/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp
@@ -87,6 +87,7 @@ void PrimaryVariableConstraintDirichletBoundaryCondition::getEssentialBCValues(
             // fetch the value of the primary variable
             auto const local_x = x.get(std::vector{global_index});
             pos.setNodeID(id);
+            pos.setCoordinates(*node);
             if (_less && local_x[0] < _threshold_parameter(t, pos).front())
             {
                 bc_values.ids.emplace_back(global_index);
diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
index bd41dd5fd3c22ad34f77bfb04e263f7b10d35b13..d7b6c7af557d68cc2384c7be9aa42569b3be0a8a 100644
--- a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
+++ b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h
@@ -31,6 +31,7 @@ class RobinBoundaryConditionLocalAssembler final
 {
     using Base = GenericNaturalBoundaryConditionLocalAssembler<
         ShapeFunction, IntegrationMethod, GlobalDim>;
+    using ShapeMatricesType = ShapeMatrixPolicyType<ShapeFunction, GlobalDim>;
 
 public:
     RobinBoundaryConditionLocalAssembler(MeshLib::Element const& e,
@@ -65,16 +66,18 @@ public:
             _data.u_0.getNodalValuesOnElement(Base::_element, t)
                 .template topRows<ShapeFunction::MeshElement::n_all_nodes>();
 
-        ParameterLib::SpatialPosition position;
-        position.setElementID(Base::_element.getID());
-
         for (unsigned ip = 0; ip < n_integration_points; ++ip)
         {
-            position.setIntegrationPoint(ip);
             auto const& ip_data = Base::_ns_and_weights[ip];
             auto const& N = ip_data.N;
             auto const& w = ip_data.weight;
 
+            ParameterLib::SpatialPosition const position{
+                boost::none, Base::_element.getID(), ip,
+                MathLib::Point3d(
+                    interpolateCoordinates<ShapeFunction, ShapeMatricesType>(
+                        Base::_element, N))};
+
             double integral_measure = 1.0;
             if (_data.integral_measure)
             {