diff --git a/src/assemblers.cc b/src/assemblers.cc
index eade2af8b48176b945212e8e42364d7899bba987..c3c146d6d79485e3e899e1e42eecb63d6e11f59a 100644
--- a/src/assemblers.cc
+++ b/src/assemblers.cc
@@ -16,11 +16,11 @@ void assemble_neumann(GridView const &gridView, AssemblerType const &assembler,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &f,
                       Dune::VirtualFunction<double, double> const &neumann,
-                      double time) { // constant sample function on neumann
-                                     // boundary
+                      double relativeTime) { // constant sample function on
+                                             // neumann boundary
   BoundaryPatch<GridView> const neumannBoundary(gridView, neumannNodes);
   LocalVectorType SampleVector(0);
-  neumann.evaluate(time, SampleVector[0]);
+  neumann.evaluate(relativeTime, SampleVector[0]);
   ConstantFunction<LocalVectorType, LocalVectorType> const fNeumann(
       SampleVector);
   NeumannBoundaryAssembler<typename GridView::Grid, LocalVectorType>
diff --git a/src/assemblers.hh b/src/assemblers.hh
index 053a336b1b367665df096df767981775c50aaf75..e0a8d0901d2a698bf810652bb136556842c5e5fd 100644
--- a/src/assemblers.hh
+++ b/src/assemblers.hh
@@ -16,7 +16,7 @@ void assemble_neumann(GridView const &gridView, AssemblerType const &assembler,
                       Dune::BitSetVector<1> const &neumannNodes,
                       Dune::BlockVector<LocalVectorType> &f,
                       Dune::VirtualFunction<double, double> const &neumann,
-                      double time);
+                      double relativeTime);
 
 template <class GridView, class LocalVectorType, class AssemblerType>
 Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>>
diff --git a/src/assemblers_tmpl.cc b/src/assemblers_tmpl.cc
index 8b6dd794f5b9af20bbeabc3776e0f585323743a9..17cedafdef926f1c3be41cd0b8f08d6cea5705b8 100644
--- a/src/assemblers_tmpl.cc
+++ b/src/assemblers_tmpl.cc
@@ -27,7 +27,7 @@ template void assemble_neumann<GridView, SmallVector, AssemblerType>(
     GridView const &gridView, AssemblerType const &assembler,
     Dune::BitSetVector<1> const &neumannNodes,
     Dune::BlockVector<SmallVector> &f,
-    Dune::VirtualFunction<double, double> const &neumann, double time);
+    Dune::VirtualFunction<double, double> const &neumann, double relativeTime);
 
 template Dune::shared_ptr<Dune::BlockVector<Dune::FieldVector<double, 1>>>
 assemble_frictional<GridView, SmallVector, AssemblerType>(
diff --git a/src/one-body-sample.cc b/src/one-body-sample.cc
index 79311323622ee13df7650910412f1b81ba00b52c..c6c93d620461348de3b36cf4fdb81d36c5dbdcfd 100644
--- a/src/one-body-sample.cc
+++ b/src/one-body-sample.cc
@@ -339,9 +339,9 @@ int main(int argc, char *argv[]) {
         frictionalNodes, *nodalIntegrals, frictionData);
 
     // Problem formulation: right-hand side
-    auto const createRHS = [&](double _time, VectorType &_ell) {
+    auto const createRHS = [&](double _relativeTime, VectorType &_ell) {
       assemble_neumann(leafView, p1Assembler, neumannNodes, _ell,
-                       neumannFunction, _time);
+                       neumannFunction, _relativeTime);
       _ell += gravityFunctional;
     };
     VectorType ell(finestSize);
@@ -491,16 +491,16 @@ int main(int argc, char *argv[]) {
       stateUpdater->nextTimeStep();
       timeSteppingScheme->nextTimeStep();
 
-      double const time = tau * run;
-      createRHS(time, ell);
+      auto const relativeTime = double(run) / double(timesteps);
+      createRHS(relativeTime, ell);
 
       MatrixType velocityMatrix;
       VectorType velocityRHS(finestSize);
       VectorType velocityIterate(finestSize);
 
       stateUpdater->setup(tau);
-      timeSteppingScheme->setup(ell, tau, time, velocityRHS, velocityIterate,
-                                velocityMatrix);
+      timeSteppingScheme->setup(ell, tau, relativeTime, velocityRHS,
+                                velocityIterate, velocityMatrix);
 
       LoopSolver<VectorType> velocityProblemSolver(
           multigridStep, maximumIterations, tolerance, &AMNorm, verbosity,
diff --git a/src/one-body-sample.py b/src/one-body-sample.py
index 8598fd153673bb6a3d5ace5a07509cad5efbbc3f..b44987fb5e0e858768ed8d8eb1abb701ac4ab244 100644
--- a/src/one-body-sample.py
+++ b/src/one-body-sample.py
@@ -1,9 +1,9 @@
 class neumannCondition:
-    def __call__(self, x):
+    def __call__(self, relativeTime):
         return 0
 
 class velocityDirichletCondition:
-    def __call__(self, x):
+    def __call__(self, relativeTime):
         return 2e-4
 
 Functions = {
diff --git a/src/timestepping.hh b/src/timestepping.hh
index 861d84752373e1612eb909643dd5d2c21896d11d..5420aa3a37339834aeaaceada3834e70ea6eba94 100644
--- a/src/timestepping.hh
+++ b/src/timestepping.hh
@@ -7,7 +7,7 @@ template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 class TimeSteppingScheme {
 public:
   void virtual nextTimeStep() = 0;
-  void virtual setup(VectorType const &ell, double _tau, double time,
+  void virtual setup(VectorType const &ell, double _tau, double relativeTime,
                      VectorType &rhs, VectorType &iterate, MatrixType &AB) = 0;
 
   void virtual postProcess(VectorType const &iterate) = 0;
diff --git a/src/timestepping/backward_euler.cc b/src/timestepping/backward_euler.cc
index 684af45838ee08b2571c3829c8335702aa63c9e4..d9828616cd137f2e9274744d55ade3a87a80de24 100644
--- a/src/timestepping/backward_euler.cc
+++ b/src/timestepping/backward_euler.cc
@@ -21,7 +21,7 @@ void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::nextTimeStep() {
 
 template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::setup(
-    VectorType const &ell, double _tau, double time, VectorType &rhs,
+    VectorType const &ell, double _tau, double relativeTime, VectorType &rhs,
     VectorType &iterate, MatrixType &AM) {
   postProcessCalled = false;
 
@@ -77,11 +77,11 @@ void BackwardEuler<VectorType, MatrixType, FunctionType, dim>::setup(
         continue;
       case dim:
         iterate[i] = 0;
-        dirichletFunction.evaluate(time, iterate[i][0]);
+        dirichletFunction.evaluate(relativeTime, iterate[i][0]);
         break;
       case 1:
         if (dirichletNodes[i][0]) {
-          dirichletFunction.evaluate(time, iterate[i][0]);
+          dirichletFunction.evaluate(relativeTime, iterate[i][0]);
           break;
         }
         if (dirichletNodes[i][1]) {
diff --git a/src/timestepping/newmark.cc b/src/timestepping/newmark.cc
index bd9dcbc0ae5a446108c64f1cf2596cedade188b9..9e7fb91f9ba2baeceb4173285934ad7e05609c54 100644
--- a/src/timestepping/newmark.cc
+++ b/src/timestepping/newmark.cc
@@ -24,7 +24,7 @@ void Newmark<VectorType, MatrixType, FunctionType, dim>::nextTimeStep() {
 
 template <class VectorType, class MatrixType, class FunctionType, size_t dim>
 void Newmark<VectorType, MatrixType, FunctionType, dim>::setup(
-    VectorType const &ell, double _tau, double time, VectorType &rhs,
+    VectorType const &ell, double _tau, double relativeTime, VectorType &rhs,
     VectorType &iterate, MatrixType &AM) {
   postProcessCalled = false;
 
@@ -83,11 +83,11 @@ void Newmark<VectorType, MatrixType, FunctionType, dim>::setup(
         continue;
       case dim:
         iterate[i] = 0;
-        dirichletFunction.evaluate(time, iterate[i][0]);
+        dirichletFunction.evaluate(relativeTime, iterate[i][0]);
         break;
       case 1:
         if (dirichletNodes[i][0]) {
-          dirichletFunction.evaluate(time, iterate[i][0]);
+          dirichletFunction.evaluate(relativeTime, iterate[i][0]);
           break;
         }
         if (dirichletNodes[i][1]) {