diff --git a/src/sand-wedge-data/parset.cfg b/src/sand-wedge-data/parset.cfg
index f6ad4f3442f4258666eca9aeadc4bcb503a27638..0becf2b53bd71ae9765a8b5df39cbdb7be77ba96 100644
--- a/src/sand-wedge-data/parset.cfg
+++ b/src/sand-wedge-data/parset.cfg
@@ -61,6 +61,7 @@ tolerance         = 1e-10
 maximumIterations = 10000
 relaxation        = 0.5
 requiredReduction = 0.5
+lambda            = 0.5
 
 [solver.tnnmg.linear]
 maxiumumIterations = 100000
diff --git a/src/sand-wedge.cc b/src/sand-wedge.cc
index c58817d7c07172122977187f7535d68e0486efb7..65f2ec000da34f3f63e5b0a3959827f42b2f9b65 100644
--- a/src/sand-wedge.cc
+++ b/src/sand-wedge.cc
@@ -369,6 +369,7 @@ int main(int argc, char *argv[]) {
     auto const printProgress = parset.get<bool>("io.printProgress");
     auto const verbosity =
         parset.get<Solver::VerbosityMode>("v.solver.verbosity");
+    auto const lambda = parset.get<double>("v.fpi.lambda");
     for (size_t timeStep = 1; timeStep <= timeSteps; ++timeStep) {
       if (printProgress)
         std::cout << std::setw(7) << timeStep << " " << std::flush;
@@ -415,8 +416,8 @@ int main(int argc, char *argv[]) {
       double lastStateCorrection;
       for (size_t stateFPI = 1; stateFPI <= maximumStateFPI; ++stateFPI) {
         timeSteppingScheme->extractOldVelocity(v_m);
-        v_m *= 0.5;
-        Arithmetic::addProduct(v_m, 0.5, v);
+        v_m *= 1.0 - lambda;
+        Arithmetic::addProduct(v_m, lambda, v);
 
         stateUpdater->solve(v_m);
         stateUpdater->extractLogState(alpha);