diff --git a/AMDiS/src/parallel/BddcMlSolver.cc b/AMDiS/src/parallel/BddcMlSolver.cc
index 6ad4bbdb32a3c46f6ed946b330342757af79edb6..eeac4bebd8591fa35a1e09ad58472db03e8e6d3a 100644
--- a/AMDiS/src/parallel/BddcMlSolver.cc
+++ b/AMDiS/src/parallel/BddcMlSolver.cc
@@ -199,7 +199,7 @@ namespace AMDiS {
     double rhs[ndofs];
     for (int i = 0; i < nComponents; i++) {
       DOFVector<double>& dofvec = *(rhsVec->getDOFVector(i));
-      for (int j = 0; j < ndofs; j++)
+      for (int j = 0; j < nnods; j++)
 	rhs[j * nComponents + i] = dofvec[j];
     }
 
@@ -340,7 +340,7 @@ namespace AMDiS {
 
     int method = 1;
     double tol = 1.e-6;
-    int maxit = 1000;
+    int maxit = 10;
     int ndecrmax = 30;
     int num_iter = 0;
     int converged_reason = 0;
@@ -358,6 +358,14 @@ namespace AMDiS {
     MSG("BDDCML converged reason: %d within %d iterations \n", 
 	converged_reason, num_iter);
 
+    bddcml_download_local_solution(&isub, rhs, &ndofs);
+
+    for (int i = 0; i < nComponents; i++) {
+      DOFVector<double>& dofvec = *(vec.getDOFVector(i));
+      for (int j = 0; j < nnods; j++)
+	dofvec[j] = rhs[j * nComponents + i];
+    }
+
     bddcml_finalize();
   }