diff --git a/runTests.sh b/runTests.sh
index e792db1f35d5769668b68cf8fbfdc2a974dfacf0..edf8d289c5e6bea10b5eb206c541d6d6592e8e11 100755
--- a/runTests.sh
+++ b/runTests.sh
@@ -4,6 +4,7 @@ summaryLog=repairs.log
 fullLog=fullLog.log
 
 echo -n "" > $log;
+echo -n "" > "repairs.table";
 
 
 echo "################################" >> $summaryLog
diff --git a/src/main/scala/leon/repair/RepairPhase.scala b/src/main/scala/leon/repair/RepairPhase.scala
index 59bc87321624d41229f5fae6e75a8f6ab39f2060..0305faf6e65f158bacd6cba907789b1ee3baf1dd 100644
--- a/src/main/scala/leon/repair/RepairPhase.scala
+++ b/src/main/scala/leon/repair/RepairPhase.scala
@@ -56,6 +56,12 @@ object RepairPhase extends LeonPhase[Program, Program] {
       } finally {
         fw.close
       }
+      val fw2 = new FileWriter("repairs.table", true)
+      try {
+        fw2.write(res.toTableLine)
+      } finally {
+        fw2.close
+      }
     }
 
     program
diff --git a/src/main/scala/leon/repair/RepairResult.scala b/src/main/scala/leon/repair/RepairResult.scala
index 7bc8f256d1954f14e2e7689fadbcc073eb4e356d..176c85c989a4bc74312643802c86068fc6f5d109 100644
--- a/src/main/scala/leon/repair/RepairResult.scala
+++ b/src/main/scala/leon/repair/RepairResult.scala
@@ -11,6 +11,7 @@ case class RepairResult(f: File,
                         focusTime: Option[Long] = None,
                         focusSize: Option[Int] = None,
                         repairTime: Option[Long] = None,
+                        repairSize: Option[Int] = None,
                         repairTrusted: Option[Boolean] = None) {
 
   def toLine = {
@@ -21,5 +22,24 @@ case class RepairResult(f: File,
     f"$benchCat%20s, $benchName%20s, $benchFun%20s, $psize%3s, $fsize%3s, ${focusSize.getOrElse("")}%3s, ${initTime.getOrElse("")}%5s, ${focusTime.getOrElse("")}%5s, ${repairTime.getOrElse("")}%5s, ${repairTrusted.getOrElse("")}%5s\n"
   }
 
+  def toTableLine = {
+    val benchCat  = f.getParentFile().getName()
+    val benchName = f.getName()
+    val benchFun  = name
+
+    def ts(ot: Option[Long]): String = {
+      val s = ot.map{
+        ms => 
+          val t: Double = Math.round(ms/100.0)/10.0
+          f"$t%.1f"
+      }.getOrElse("")
+
+      f"$s%5s"
+    }
+
+    val verified = repairTrusted.map(if (_) "\\chmark" else "").getOrElse("")
+
+    f"$benchCat%20s &  $benchName%20s & $benchFun%20s & $psize%4s & $fsize%3s & ${focusSize.getOrElse("")}%3s & ${repairSize.getOrElse("")}%3s & ${ts(initTime)} & ${ts(focusTime)} & ${ts(repairTime)} & $verified%7s \\\\ \n"
+  }
 }
 
diff --git a/src/main/scala/leon/repair/Repairman.scala b/src/main/scala/leon/repair/Repairman.scala
index e1bd4659350e5555a29447d74e850593e072106e..6ac5b7f053e84c590968fd9c98f8715e544ef28e 100644
--- a/src/main/scala/leon/repair/Repairman.scala
+++ b/src/main/scala/leon/repair/Repairman.scala
@@ -37,9 +37,14 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout
     case class NotValid(passing : List[Example], failing : List[Example]) extends VerificationResult
   }
 
-  var result = RepairResult(ctx.files.head, visibleFunDefsFromMain(initProgram).foldLeft(0) {
-    case (s, f) => formulaSize(f.fullBody) + s
-  });
+  def programSize(pgm: Program): Int = {
+    visibleFunDefsFromMain(pgm).foldLeft(0) {
+      case (s, f) => 
+        1 + f.params.size + formulaSize(f.fullBody) + s
+    }
+  }
+
+  var result = RepairResult(ctx.files.head, programSize(initProgram));
 
   import VRes._
   
@@ -121,6 +126,7 @@ class Repairman(ctx: LeonContext, initProgram: Program, fd: FunDef, verifTimeout
                 for ((sol, i) <- solutions.reverse.zipWithIndex) {
                   reporter.info(ASCIIHelpers.subTitle("Solution "+(i+1)+":"))
                   val expr = sol.toSimplifiedExpr(ctx, program)
+                  result = result.copy(repairSize = Some(formulaSize(expr)))
                   reporter.info(ScalaPrinter(expr));
                 }
                 reporter.info(ASCIIHelpers.title("In context:"))