diff --git a/dune/solvers/iterationsteps/mmgstep.cc b/dune/solvers/iterationsteps/mmgstep.cc
index 1e62630e514b40d7b4ada5fcac6f9d35a18db1fb..4d543d876e508c8995a1d10a38e8f9e023040512 100644
--- a/dune/solvers/iterationsteps/mmgstep.cc
+++ b/dune/solvers/iterationsteps/mmgstep.cc
@@ -214,8 +214,9 @@ void MonotoneMGStep<MatrixType, VectorType>::iterate()
         // Debug: is the current iterate really admissible?
         for (size_t i=0; i<obstacles[level].size(); i++)
             for (int j=0; j<VectorType::block_type::dimension; j++)
-                if ((*x[level])[i][j] < obstacles[level][i].lower(j)
-                    || (*x[level])[i][j] > obstacles[level][i].upper(j)) {
+                if (((*x[level])[i][j] - obstacles[level][i].lower(j)<-1e-14
+                    || (*x[level])[i][j] - obstacles[level][i].upper(j) >1e-14 )
+                    && (!(*this->ignoreNodesHierarchy_[level])[i][j])) {
                     
                     std::cout << "Obstacle disregarded!\n";
                     std::cout << (*x[level])[i] << std::endl << obstacles[level][i] << std::endl;