diff --git a/src/main/scala/leon/synthesis/rules/Cegis.scala b/src/main/scala/leon/synthesis/rules/Cegis.scala
index 80171e36db66787a306b93b582e241f8b5dd76e3..1580e81b7a25ec3200c6357699dae48e4306f2a0 100644
--- a/src/main/scala/leon/synthesis/rules/Cegis.scala
+++ b/src/main/scala/leon/synthesis/rules/Cegis.scala
@@ -161,7 +161,10 @@ case object CEGIS extends Rule("CEGIS", 150) {
 
               var continue = !clauses.isEmpty
 
+              //println("Unrolling #"+unrolings+" bss size: "+bss.size)
+
               while (result.isEmpty && continue) {
+                //println("Looking for CE...")
                 //println("-"*80)
                 //println(basePhi)
 
@@ -214,25 +217,20 @@ case object CEGIS extends Rule("CEGIS", 150) {
 
                         solver1.pop()
 
-                        val freshCss = unrolling.css.map(c => c -> Variable(FreshIdentifier(c.name, true).setType(c.getType))).toMap
-
-                        val ceIn     = ass.map(id => id -> invalidModel(id))
-
-                        val counterexemple = substAll(freshCss ++ ceIn, And(Seq(unrolling.program, unrolling.phi)))
-
-                        //println("#"*80)
-                        //println(currentF.phi)
-                        //println(substAll(freshCss ++ ceIn, currentF.phi))
-
-                        // Found as such as the xs break, refine predicates
-                        solver1.assertCnstr(counterexemple)
-                        solver2.assertCnstr(counterexemple)
-
                         if (unsatCore.isEmpty) {
                           continue = false
                         } else {
+
+                          val freshCss = unrolling.css.map(c => c -> Variable(FreshIdentifier(c.name, true).setType(c.getType))).toMap
+                          val ceIn     = ass.map(id => id -> invalidModel(id))
+                          val counterexemple = substAll(freshCss ++ ceIn, And(Seq(unrolling.program, unrolling.phi)))
+
+                          solver1.assertCnstr(counterexemple)
+                          solver2.assertCnstr(counterexemple)
+
                           //predicates = Not(And(unsatCore.toSeq)) +: counterexemple +: predicates
                           solver1.assertCnstr(Not(And(unsatCore.toSeq)))
+                          solver2.assertCnstr(Not(And(unsatCore.toSeq)))
                         }
 
                       case Some(false) =>