diff --git a/src/main/scala/leon/evaluators/TracingEvaluator.scala b/src/main/scala/leon/evaluators/TracingEvaluator.scala
index 273270b46250e9facbabd3dce0581328d24e9095..e99cd8269b8d6f08777fd7034342bfb98f31939c 100644
--- a/src/main/scala/leon/evaluators/TracingEvaluator.scala
+++ b/src/main/scala/leon/evaluators/TracingEvaluator.scala
@@ -17,7 +17,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex
 
   def initGC = new TracingGlobalContext(Nil)
 
-  class TracingGlobalContext(var values: List[(Expr, Expr)]) extends GlobalContext
+  class TracingGlobalContext(var values: List[(Tree, Expr)]) extends GlobalContext
 
   case class TracingRecContext(mappings: Map[Identifier, Expr], tracingFrames: Int) extends RecContext {
     def withVars(news: Map[Identifier, Expr]) = copy(mappings = news)
@@ -37,7 +37,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex
 
           val r = cases.toStream.map(c => matchesCase(rscrut, c)).find(_.nonEmpty) match {
             case Some(Some((c, mappings))) =>
-              gctx.values ++= mappings.map { case (id, v) => id.toVariable.setPos(id) -> v }
+              gctx.values ++= (Map(c.pattern -> rscrut) ++ mappings.map { case (id, v) => id.toVariable.setPos(id) -> v })
 
               e(c.rhs)(rctx.withNewVars(mappings), gctx)
             case _ =>