diff --git a/CEP/DP3/DPPP_DDECal/src/DDECal.cc b/CEP/DP3/DPPP_DDECal/src/DDECal.cc
index 7b90208bd8b2a0c1aeb89af6f36d0cf7b0330695..a6b1fc64f0d34fddff65ac18248a596b5347188b 100644
--- a/CEP/DP3/DPPP_DDECal/src/DDECal.cc
+++ b/CEP/DP3/DPPP_DDECal/src/DDECal.cc
@@ -877,7 +877,6 @@ namespace LOFAR {
             // Put solution weights in a contiguous piece of memory
             vector<double> weights;
             if (!itsConstraintSols[0][constraintNum][solNameNum].weights.empty()) {
-	      std::cout << "Has weights.\n";
               weights.resize(numSols);
               vector<double>::iterator nextpos = weights.begin();
               for (uint time=0; time<itsSols.size(); ++time) {
diff --git a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc b/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc
index d2d4f98542587d537a71fac0ce4a0b65a579932b..69019b9f2810fd9b90924b1f9466b32274b03988 100644
--- a/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc
+++ b/CEP/DP3/DPPP_DDECal/src/MultiDirSolver.cc
@@ -167,7 +167,7 @@ bool MultiDirSolver::assignSolutions(std::vector<std::vector<DComplex> >& soluti
 
   // The stepsize is taken out, so that a small stepsize won't cause
   // a premature stopping criterion.
-  double stepMagnitude = avgAbsDiff/_stepSize/n;
+  double stepMagnitude = (n==0 ? 0 : avgAbsDiff/_stepSize/n);
   stepMagnitudes.emplace_back(stepMagnitude);
 
   if(useConstraintAccuracy)
@@ -375,7 +375,7 @@ void MultiDirSolver::performScalarIteration(size_t channelBlockIndex,
     // solve x^H in [g C] x^H  = v
     bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data());
     Matrix& x = vs[ant];
-    if(success)
+    if(success && x(0, 0) != 0.)
     {
       for(size_t d=0; d!=_nDirections; ++d)
         nextSolutions[ant*_nDirections + d] = x(d, 0);
@@ -639,7 +639,7 @@ void MultiDirSolver::performFullMatrixIteration(size_t channelBlockIndex,
     // solve x^H in [g C] x^H  = v
     bool success = solver.Solve(gTimesCs[ant].data(), vs[ant].data());
     Matrix& x = vs[ant];
-    if(success)
+    if(success && x(0, 0) != 0.)
     {
       for(size_t d=0; d!=_nDirections; ++d)
       {
@@ -650,8 +650,9 @@ void MultiDirSolver::performFullMatrixIteration(size_t channelBlockIndex,
       }
     }
     else {
-      for(size_t i=0; i!=_nDirections*4; ++i)
-        nextSolutions[ant*_nDirections + i] = std::numeric_limits<double>::quiet_NaN();
+      for(size_t i=0; i!=_nDirections*4; ++i) {
+        nextSolutions[ant*_nDirections*4 + i] = std::numeric_limits<double>::quiet_NaN();
+      }
     }
   }
   _timerSolve.Pause();