diff --git a/INSTALL.txt b/INSTALL.txt
index 8cbc168caa02379f07af461a270d0af245332d95..a33f4fad7e30439ee2609bf2a0674cd17c5d0592 100644
--- a/INSTALL.txt
+++ b/INSTALL.txt
@@ -1,5 +1,5 @@
 (* OASIS_START *)
-(* DO NOT EDIT (digest: 508d99c6cac10435d93632adee94a796) *)
+(* DO NOT EDIT (digest: 2bc39709ec41ab29bcd687aeb4b37571) *)
 
 This is the INSTALL file for the lustre-v6 distribution.
 
@@ -15,7 +15,7 @@ In order to compile this package, you will need:
 * findlib
 * lutils for executable lus2lic, executable lus2lic.dbg
 * extlib for executable lus2lic, executable lus2lic.dbg
-* rdbg-plugin (>= 1.51) for library lustre-v6
+* rdbg-plugin (>= 1.109) for library lustre-v6
 
 Installing
 ==========
diff --git a/_oasis b/_oasis
index 61691a0b7c47d05a4e00eccab4f7bd2c3b6159f8..eab3d130ea001e4534b0b4606bbe55a25eba744a 100644
--- a/_oasis
+++ b/_oasis
@@ -1,6 +1,6 @@
 OASISFormat: 0.4
 Name:        lustre-v6
-Version:     1.713
+Version:     1.714
 Synopsis:    The Lustre V6 Verimag compiler
 Description: This package contains:
    (1) lus2lic: the (current) name of the compiler (and interpreter via -exec).
@@ -47,7 +47,7 @@ Library "lustre-v6"
   Modules:    Lus2licRun
   Path:       src/
   BuildTools: ocamlbuild 
-  BuildDepends: str,unix,num,rdbg-plugin (>= 1.51) 
+  BuildDepends: str,unix,num,rdbg-plugin (>= 1.109) 
   Install:true
   XMETAEnable: true
   InternalModules: SocExecValue,SocUtils,Lv6util,Lv6version,Lv6errors,Lxm,Lv6MainArgs,Lv6Verbose,Soc,SocPredef,Lv6Id,SocExecDbg,SocExec,SocExecEvalPredef,Lv6Compile,AstTab,AstTabSymbol,AstInstanciateModel,Lv6parserUtils,AstV6,FilenameExtras,LicTab,LicDump,AstPredef,Lic,AstCore,FreshName,IdSolver,EvalConst,LicEvalConst,LicEvalType,UnifyType,Ast2lic,AstV6Dump,EvalClock,UnifyClock,LicEvalClock,EvalType,LicPrg,LicMetaOp,L2lCheckOutputs,Lv6Misc,L2lRmPoly,L2lExpandMetaOp,L2lSplit,L2lExpandNodes,L2lExpandArrays,L2lCheckLoops,L2lCheckMemSafe,L2lOptimIte,Lv6lexer,Lv6parser,AstRecognizePredef,Lic2soc,Action,ActionsDeps,SocVar,TopoSort,SortActions,SortActionsExpe,L2lCheckCKeyWord,L2lCheckKcgKeyWord,L2lWhenOnId,L2lNoWhenNot,L2lRemoveAlias,L2lExpandEnum
diff --git a/src/astRecognizePredef.ml b/src/astRecognizePredef.ml
index d6c784bfe3edff36a4f6f6a8a2a43d976148f6d3..dc3cf4da6e5e4fdf2472e7c572cf948b3748c217 100644
--- a/src/astRecognizePredef.ml
+++ b/src/astRecognizePredef.ml
@@ -1,9 +1,9 @@
-(* Time-stamp: <modified the 26/02/2015 (at 11:19) by Erwan Jahier> *)
+(* Time-stamp: <modified the 22/08/2017 (at 14:57) by Erwan Jahier> *)
 
 
 let (get_predef : Lv6Id.idref -> AstPredef.op option) =
   fun idref -> 
-    let get_op () =
+  let get_op () = (* XXX if a user node is named "plus", this does not work *)
       try Some (AstPredef.string_to_op (Lv6Id.to_string (Lv6Id.name_of_idref idref)))
       with Not_found -> None
     in
diff --git a/src/lv6version.ml b/src/lv6version.ml
index 9a8940f001c4023a3a3d9f39b3a249ca28a8077f..46d59b961223897cb4be78e2c77e226b285d829d 100644
--- a/src/lv6version.ml
+++ b/src/lv6version.ml
@@ -1,7 +1,7 @@
 (** Automatically generated from Makefile *) 
 let tool = "lus2lic"
 let branch = "master"
-let commit = "713"
-let sha_1 = "1057e2e156514d86bf984a88335a79013826b823"
+let commit = "714"
+let sha_1 = "4921d8393f86044569a89270e71dcc6d466e29a7"
 let str = (branch ^ "." ^ commit ^ " (" ^ sha_1 ^ ")")
 let maintainer = "erwan.jahier@univ-grenoble-alpes.fr"
diff --git a/src/socExecDbg.ml b/src/socExecDbg.ml
index 6879f73fce16e39c72b29c379476002d9a056f4b..738633b100c1d015bf909d384675fa209ef67cf4 100644
--- a/src/socExecDbg.ml
+++ b/src/socExecDbg.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 10/07/2017 (at 11:01) by Erwan Jahier> *)
+(* Time-stamp: <modified the 06/09/2017 (at 11:57) by Erwan Jahier> *)
 open Soc
 open Data
 open SocExecValue
@@ -269,6 +269,23 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx ->
         [_] -> soc_name
       | _ -> soc_name^"."^step.name
     in
+    let locals = if soc.step = [] then [] else
+      match (List.hd soc.step).impl with
+          | Gaol (var_list, _) -> var_list
+          | Iterator _
+          | Boolred _
+          | Condact _
+          | Predef 
+          | Extern -> []
+    in
+    let sinfo_subst arg var =
+      match arg with
+      | Var v -> v,var
+      | Const v -> v,var
+      | Field (_,_,t)
+      | Index (_,_,t)
+      | Slice (_,_,_,_,_,t) ->  (SocUtils.string_of_filter arg, t), var
+    in
     (*     let soc_step_in, soc_step_out = step.profile in *)
     let sinfo = 
         let l = Lxm.line lxm in
@@ -290,6 +307,8 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx ->
               Event.expr  = Expr.Var "dummy" ; (* XXX *)
               Event.atoms = [atom];
               Event.more  = None;  (* yet *)
+              Event.in_subst = List.map2 sinfo_subst vel_in step_in_vars;
+              Event.out_subst = List.map2 sinfo_subst vel_out step_out_vars;
             }
           )
     in
@@ -301,6 +320,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx ->
         Event.data = datal;
         Event.inputs  = fst soc.profile;
         Event.outputs = snd soc.profile;
+        Event.locals = locals;
         Event.sinfo = sinfo;
     }
     in
@@ -321,6 +341,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx ->
         Event.name = step_name;
         Event.inputs = ectx.Event.inputs;
         Event.outputs = ectx.Event.outputs;
+        Event.locals = ectx.Event.locals;
         Event.sinfo = sinfo;
         Event.data = datal;
         Event.next = (fun () -> cont nectx val_ctx);
@@ -336,6 +357,7 @@ and (do_soc_step : Lxm.t -> Lv6Id.t -> step_method -> SocExecValue.ctx ->
       Event.name = step_name;
       Event.inputs = ectx.Event.inputs;
       Event.outputs = ectx.Event.outputs;
+      Event.locals = ectx.Event.locals;
       Event.sinfo = sinfo;
       Event.data = ectx.Event.data;
       Event.next = (fun () ->
@@ -375,6 +397,15 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx ->
     let (datal:Data.subst list) = get_input_vals val_ctx soc_in_vars in 
     let (soc_name,_,_) = soc.key in
     let lxm = (List.hd soc.step).lxm in
+    let locals = if soc.step = [] then [] else
+      match (List.hd soc.step).impl with
+          | Gaol (var_list, _) -> var_list
+          | Iterator _
+          | Boolred _
+          | Condact _
+          | Predef 
+          | Extern -> []
+    in
     let sinfo = 
           Some(fun () ->
             let atom =
@@ -390,6 +421,8 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx ->
               Event.expr  = Expr.Var "dummy" ; (* XXX *)
               Event.atoms = [atom];
               Event.more  = None;  (* yet *)
+              Event.in_subst = [];
+              Event.out_subst = [];
             }
           )
     in
@@ -400,6 +433,7 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx ->
         Event.data = datal;
         Event.inputs  = fst soc.profile;
         Event.outputs = snd soc.profile;
+        Event.locals = locals;
         Event.sinfo = sinfo;
     } 
     in
@@ -421,6 +455,7 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx ->
         Event.name = soc_name;
         Event.inputs  = fst soc.profile;
         Event.outputs = snd soc.profile;
+        Event.locals = locals;
         Event.sinfo = sinfo;
         Event.data = datal;
         Event.next = (fun () -> cont nectx val_ctx);
@@ -436,7 +471,8 @@ and (do_step_dbg : Soc.tbl -> Soc.t -> Event.t -> SocExecValue.ctx ->
       Event.name = soc_name;
       Event.inputs = ectx.Event.inputs;
       Event.outputs = ectx.Event.outputs;
-      Event.sinfo = None;
+      Event.locals = locals;
+      Event.sinfo = sinfo;
       Event.data = ectx.Event.data;
       Event.next = (fun () -> 
         let step = match soc.step with [step] -> step | _ ->  assert false in
diff --git a/src/socExecValue.ml b/src/socExecValue.ml
index fcc82c7ca7a56c7164622443dc8315fb50fd05ac..e01424d8b01cedeaea1b401768d9a5ad46a509d0 100644
--- a/src/socExecValue.ml
+++ b/src/socExecValue.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 16/08/2017 (at 17:13) by Erwan Jahier> *)
+(* Time-stamp: <modified the 29/08/2017 (at 15:55) by Erwan Jahier> *)
 
 let dbg = (Lv6Verbose.get_flag "exec")
 
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 5e11b8d8242e9cb16055ec6f9958f1cf4b09a654..c263d411d313f8cf69d5ed36a026fe1633d0566c 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,5 +1,5 @@
 ==> lus2lic0.sum <==
-Test Run By jahier on Tue Aug 22 11:31:21 
+Test Run By jahier on Mon Aug 28 17:05:56 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic0 tests ===
@@ -66,7 +66,7 @@ XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/lecte
 XFAIL: Test bad programs (assert): test_lus2lic_no_node should_fail/assert/s.lus
 
 ==> lus2lic1.sum <==
-Test Run By jahier on Tue Aug 22 11:31:22 
+Test Run By jahier on Mon Aug 28 17:05:57 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic1 tests ===
@@ -412,7 +412,7 @@ PASS: sh multipar.sh
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c multipar.lus  {}
 
 ==> lus2lic2.sum <==
-Test Run By jahier on Tue Aug 22 11:32:16 
+Test Run By jahier on Mon Aug 28 17:06:49 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic2 tests ===
@@ -752,7 +752,7 @@ PASS: sh zzz2.sh
 PASS: /home/jahier/lus2lic/test/../utils/compare_exec_and_2c zzz2.lus  {}
 
 ==> lus2lic3.sum <==
-Test Run By jahier on Tue Aug 22 11:33:12 
+Test Run By jahier on Mon Aug 28 17:07:47 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic3 tests ===
@@ -1101,7 +1101,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node is_stable.lus {}
 PASS: ./lus2lic {} {-o iter.lic iter.lus}
 PASS: ./lus2lic {-ec -o iter.ec iter.lus}
 PASS: ./myec2c {-o iter.c iter.ec}
-PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {}
+FAIL: Try to compare lus2lic -exec and ecexe: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node iter.lus {}
 PASS: ./lus2lic {} {-o iterFibo.lic iterFibo.lus}
 PASS: ./lus2lic {-ec -o iterFibo.ec iterFibo.lus}
 PASS: ./myec2c {-o iterFibo.c iterFibo.ec}
@@ -1266,7 +1266,7 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node multipar.lus {}
 
 
 ==> lus2lic4.sum <==
-Test Run By jahier on Tue Aug 22 11:34:25 
+Test Run By jahier on Mon Aug 28 17:09:00 
 Native configuration is x86_64-unknown-linux-gnu
 
 		=== lus2lic4 tests ===
@@ -1771,8 +1771,8 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 ==> lus2lic3.sum <==
 		=== lus2lic3 Summary ===
 
-# of expected passes		495
-# of unexpected failures	5
+# of expected passes		494
+# of unexpected failures	6
 # of unresolved testcases	1
 
 ==> lus2lic4.sum <==
@@ -1782,15 +1782,15 @@ PASS: /home/jahier/lus2lic/test/../utils/test_lus2lic_no_node zzz2.lus {}
 # of expected passes		465
 # of unexpected failures	6
 ===============================
-# Total number of failures: 13
-lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 1 seconds
-lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 53 seconds
-lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 56 seconds
+# Total number of failures: 14
+lus2lic0.log:testcase ./lus2lic.tests/test0.exp completed in 0 seconds
+lus2lic1.log:testcase ./lus2lic.tests/test1.exp completed in 52 seconds
+lus2lic2.log:testcase ./lus2lic.tests/test2.exp completed in 58 seconds
 lus2lic3.log:testcase ./lus2lic.tests/test3.exp completed in 73 seconds
-lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 45 seconds
+lus2lic4.log:testcase ./lus2lic.tests/test4.exp completed in 46 seconds
 * Ref time: 
-0.06user 0.01system 3:50.32elapsed 0%CPU (0avgtext+0avgdata 5564maxresident)k
-32inputs+0outputs (0major+6181minor)pagefaults 0swaps
+0.06user 0.00system 3:51.51elapsed 0%CPU (0avgtext+0avgdata 5588maxresident)k
+0inputs+0outputs (0major+6187minor)pagefaults 0swaps
 * Quick time (-j 4):
-0.05user 0.02system 1:41.84elapsed 0%CPU (0avgtext+0avgdata 5660maxresident)k
-128inputs+0outputs (0major+6194minor)pagefaults 0swaps
+0.05user 0.02system 1:58.38elapsed 0%CPU (0avgtext+0avgdata 5704maxresident)k
+0inputs+0outputs (0major+6193minor)pagefaults 0swaps
diff --git a/test/should_work/iter.lus b/test/should_work/iter.lus
index 856b27485af509a84d63e34f56fe02d33874432d..c1412fde0c17d93906af684eff26f49d1e83ccaa 100644
--- a/test/should_work/iter.lus
+++ b/test/should_work/iter.lus
@@ -7,7 +7,7 @@ var
 let
 	bidon, T_inter = fill<<filled,n>>(init);
 	Tab_out = map<<mapped,n>>(T_inter);
-	Red_plus = red<<myplus,n>>(-100, Tab_out);
+	Red_plus = red<<plus,n>>(-100, Tab_out);
 
 	zorroAcc, zorroTab = fillred<<garcia,5>>(0,[0,0,0,0,0]);
 tel
@@ -23,7 +23,7 @@ let
 	elt_out = elt_in + 1;
 tel
 
-node myplus(accu_in, elt_in : int) returns (accu_out : int);
+node plus(accu_in, elt_in : int) returns (accu_out : int);
 let
 	accu_out = accu_in + elt_in ;
 tel