diff --git a/dune/solvers/iterationsteps/obstacletnnmgstep.hh b/dune/solvers/iterationsteps/obstacletnnmgstep.hh
index dec535cab1aae5854b4c2a187675f466d2eb0164..2efefd926491307cb172dbe6f2f8be103f6db92f 100644
--- a/dune/solvers/iterationsteps/obstacletnnmgstep.hh
+++ b/dune/solvers/iterationsteps/obstacletnnmgstep.hh
@@ -150,7 +150,6 @@ class ObstacleTNNMGStep
             coarseCorrection_.resize(x_->size());
             temp_.resize(x_->size());
 
-            linearMGStep_.setNumberOfLevels(transfer_.size()+1);
             linearMGStep_.setTransferOperators(transfer_);
             linearMGStep_.setSmoother(&linearSmoother_);
             linearMGStep_.basesolver_ = &baseSolver_;
@@ -359,6 +358,11 @@ class ObstacleTNNMGStep
         void nestedIteration(int coarseIterationSteps=2)
         {
             int maxLevel = transfer_.size();
+            if (maxLevel==0)
+            {
+                *x_ = 0.0;
+                return;
+            }
 
             std::vector<Matrix> coarseMatrix(maxLevel);
             std::vector<Vector> coarseSolution(maxLevel);