diff --git a/src/l2lExpandMetaOp.ml b/src/l2lExpandMetaOp.ml
index 78c87ce4cdf284dd6e9677fc8a486887ed87b9a9..2ca80d60df62ea0b9a4d89dee4460c6d2a451e8b 100644
--- a/src/l2lExpandMetaOp.ml
+++ b/src/l2lExpandMetaOp.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 03/06/2013 (at 10:50) by Erwan Jahier> *)
+(** Time-stamp: <modified the 04/06/2013 (at 14:43) by Erwan Jahier> *)
 
 open Lxm
 open Lic
@@ -104,6 +104,22 @@ let (binop_to_val_exp : Ident.t -> val_exp -> val_exp -> val_exp) =
       ve_typ = ve1.ve_typ;
       ve_core = CallByPosLic(op, [ve1; ve2])
     }
+let (fby_to_val_exp : val_exp -> val_exp -> val_exp) =
+  fun ve1 ve2 ->
+    let op = { it = FBY ; src = lxm } in
+    {
+      ve_clk = ve1.ve_clk;
+      ve_typ = ve1.ve_typ;
+      ve_core = CallByPosLic(op, [ve1; ve2])
+    }
+let (tuple_to_val_exp : val_exp list -> val_exp) =
+  fun vel ->
+    let op = { it = TUPLE ; src = lxm } in
+    {
+      ve_clk = List.flatten (List.map (fun ve -> ve.ve_clk) vel);
+      ve_typ = List.flatten (List.map (fun ve -> ve.ve_typ) vel);
+      ve_core = CallByPosLic(op, vel)
+    }
 let (ite_to_val_exp : val_exp -> val_exp -> val_exp -> val_exp) =
   fun ve1 ve2 ve3 ->
     let ite_op  = { it = PREDEF_CALL({src=lxm;it=("Lustre","if"),[]}); src = lxm } in
@@ -340,15 +356,14 @@ node condact_plus_0(i0:bool; i1:int; i2:int) returns (o0:int) = Lustre::condact<
 
 node condact_plus_0(i0:bool; i1:int; i2:int) returns (o0:int) = 
 let
-  o0 = if i0 then Lustre::plus(i1,i2) else 0;
+  o0 = if i0 then Lustre::plus(i1,i2) else (0 fby o0);
 tel
   Lustre::condact<<Lustre::plus, 0>>;
   *)
     let node,c = match List.sort compare sargs with
       | [ConstStaticArgLic(_, c);TypeStaticArgLic(_);NodeStaticArgLic(_, node_key)]
       | [ConstStaticArgLic(_, c) ; NodeStaticArgLic(_, node_key)]
-        -> 
-        node_key,c
+        -> node_key,c
       | _ -> assert false
     in
     let cond_exp, inputs = 
@@ -361,7 +376,12 @@ tel
       List.map (fun x -> x.Lic.var_type_eff) lctx.node.Lic.outlist_eff in
     let node_exp = node_to_val_exp node node_out_type_list inputs
     and const_exp = val_exp_of_const c in
-    let rigth = ite_to_val_exp cond_exp node_exp const_exp in
+    let out_exp = match lctx.node.Lic.outlist_eff with 
+        [o] -> val_exp_of_var_info o 
+      | _ -> tuple_to_val_exp (List.map val_exp_of_var_info lctx.node.Lic.outlist_eff)
+    in
+    let else_exp = fby_to_val_exp const_exp out_exp in
+    let rigth = ite_to_val_exp cond_exp node_exp else_exp in
     let eq = { src = lxm ; it = (left, rigth) } in
     { asserts_eff = []; eqs_eff = [eq] }, []
 
diff --git a/src/lic.ml b/src/lic.ml
index 5b47933d797fef88e493109851d13445101f2819..3142759a590a91cdd928dbec06a85cde815f9baf 100644
--- a/src/lic.ml
+++ b/src/lic.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 16/05/2013 (at 16:02) by Erwan Jahier> *)
+(* Time-stamp: <modified the 04/06/2013 (at 14:59) by Erwan Jahier> *)
 
 (** Define the Data Structure representing Compiled programs. *)
 
@@ -550,6 +550,7 @@ let (types_of_const: const -> type_ list) =
 	| Tuple_const_eff cl -> List.map type_of_const cl
 	| c -> [type_of_const c]
 
+
 (* const list *)
 
 (* Ignore the abstraction layer (necessary when expanding struct) *)
diff --git a/src/socUtils.ml b/src/socUtils.ml
index 7d62d18d99327b51226c67f67a077c876c98e19c..5e9e3f971c8aef6722a4d857ab4d82c4fde1f119 100644
--- a/src/socUtils.ml
+++ b/src/socUtils.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 17/05/2013 (at 17:43) by Erwan Jahier> *)
+(** Time-stamp: <modified the 04/06/2013 (at 15:45) by Erwan Jahier> *)
 
 
 open Soc
diff --git a/src/unifyClock.ml b/src/unifyClock.ml
index 9ea09ee5abda07f8c1a83f9ead8aed6763eb5bea..300fb5a0063d7b4ed2641f010bfa57d9c383ef86 100644
--- a/src/unifyClock.ml
+++ b/src/unifyClock.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 23/05/2013 (at 09:29) by Erwan Jahier> *)
+(* Time-stamp: <modified the 04/06/2013 (at 15:00) by Erwan Jahier> *)
 
 
 open LicDump
@@ -277,10 +277,18 @@ let (list : Lxm.t -> Lic.clock list -> subst -> Lic.clock * subst) =
 let rec (const_to_val_eff: Lxm.t -> bool -> subst -> const -> subst * val_exp) = 
   fun lxm expand_const s const -> 
     let mk_by_pos_op_arg by_pos_op_eff arg =
-      let s, clk = new_clock_var s in
+      let s,clk = match const with
+	     | Tuple_const_eff cl ->
+          let f (s,clks) c =  
+            let s, clk = new_clock_var s in
+            (s,clk::clks)
+          in
+          List.fold_left f (s,[]) cl
+	     | c -> let s, clk = new_clock_var s in s, [clk]
+      in
       { ve_core = CallByPosLic(flagit by_pos_op_eff lxm, arg) ; 
         ve_typ = types_of_const const ;
-        ve_clk = [clk];
+        ve_clk = clk;
       }
     in
     let mk_by_pos_op by_pos_op_eff = mk_by_pos_op_arg by_pos_op_eff [] in
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 5b5c2fd7dc3e00100324306914f22bf1de86d6d2..ad5e3c7393574a70581ede03971293fb7c83579f 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Tue Jun  4 10:06:34 2013
+Test Run By jahier on Tue Jun  4 15:46:03 2013
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -849,7 +849,7 @@ PASS: ../utils/test_lus2lic_no_node should_work/flo.lus
 PASS: ./lus2lic {-o /tmp/cond01.lic should_work/cond01.lus}
 PASS: ./lus2lic {-ec -o /tmp/cond01.ec should_work/cond01.lus}
 PASS: ./myec2c {-o /tmp/cond01.c /tmp/cond01.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/cond01.lus
+PASS: ../utils/test_lus2lic_no_node should_work/cond01.lus
 PASS: ./lus2lic {-o /tmp/shiftFill_ludic.lic should_work/shiftFill_ludic.lus}
 PASS: ./lus2lic {-ec -o /tmp/shiftFill_ludic.ec should_work/shiftFill_ludic.lus}
 PASS: ./myec2c {-o /tmp/shiftFill_ludic.c /tmp/shiftFill_ludic.ec}
@@ -1020,9 +1020,7 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		873
-# of unexpected failures	77
+# of expected passes		874
+# of unexpected failures	76
 # of unexpected successes	21
 # of expected failures		37
-testcase ./lus2lic.tests/non-reg.exp completed in 229 seconds
-testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/pipeline.lus b/test/should_work/pipeline.lus
index 1c7f116f51dea79181431b21adece0d744749f7c..dad2c5a24c2af5468a2d9169a2505a5392afa85d 100644
--- a/test/should_work/pipeline.lus
+++ b/test/should_work/pipeline.lus
@@ -16,7 +16,8 @@ node oneStep_pipe(accu_in : bool; elt_in :  bool)
      returns (accu_out :  bool;
               elt_out :  bool);
 let
-  elt_out = true->pre(not(accu_in));  -- at rank 'i+1' accu_in contains tab[i-1] and elt_in contains tab[i]
+  elt_out = true->pre(not(accu_in));  
+  -- at rank 'i+1' accu_in contains tab[i-1] and elt_in contains tab[i]
   accu_out = elt_in;
 tel
 
diff --git a/todo.org b/todo.org
index 696ed06e3e7220060521e596b44c6498cd93034a..023d5c067ec2cdc93aac4606e4aea23976eb5ab1 100644
--- a/todo.org
+++ b/todo.org
@@ -3,42 +3,11 @@
 
 * lus2lic -exec
 
-** TODO Extern node not yet supported
-
-oops: lus2lic internal error
-   - State "TODO"       from ""           [2013-05-13 Mon 08:11]
-
-../utils/test_lus2lic_no_node should_work/decl.lus
-	File "objlinux/lic2soc.ml", line 870, column 14
- when compiling lustre program should_work/decl.lus
-
-
-../utils/test_lus2lic_no_node should_work/simple.lus
-	File "objlinux/socExec.ml", line 202, column 22
- when compiling lustre program should_work/simple.lus
-
-** TODO Lurette trouve un mismatch sur ce prog au step 0
-   - State "TODO"       from ""           [2013-05-10 Fri 17:08]
-
-../utils/test_lus2lic_no_node should_work/mapdeRed.lus
-../utils/test_lus2lic_no_node should_work/matrice.lus
-../utils/test_lus2lic_no_node should_work/over2.lus
-../utils/test_lus2lic_no_node should_work/mapiter.lus
-../utils/test_lus2lic_no_node should_work/arrays.lus
-../utils/test_lus2lic_no_node should_work/nested.lus    
-../utils/test_lus2lic_no_node should_work/predefOp.lus
-file:test/should_work/predefOp.lus
-
 ** TODO Lurette trouve un mismatch sur ce prog au step 1
    - State "TODO"       from ""           [2013-05-10 Fri 17:08]
 
 ../utils/test_lus2lic_no_node should_work/pipeline.lus
 
-** TODO Lurette trouve un mismatch sur ce prog au step 2
-   - State "TODO"       from ""           [2013-05-10 Fri 17:08]
-../utils/test_lus2lic_no_node should_work/X2.lus
-../utils/test_lus2lic_no_node should_work/cond01.lus
-
 ** TODO Lurette trouve un mismatch sur ce prog au step 7
    - State "TODO"       from ""           [2013-05-10 Fri 17:08]
 
@@ -51,11 +20,24 @@ file:test/should_work/deSimone.lus
 
 ../utils/test_lus2lic_no_node should_work/deSimone.lus
 
-
 ** TODO Lurette trouve un mismatch sur ce prog au step 2
    - State "TODO"       from ""           [2013-05-10 Fri 17:08]
 ../utils/test_lus2lic_no_node should_work/test.lus
 
+** TODO Extern node not yet supported
+
+oops: lus2lic internal error
+   - State "TODO"       from ""           [2013-05-13 Mon 08:11]
+
+../utils/test_lus2lic_no_node should_work/decl.lus
+	File "objlinux/lic2soc.ml", line 870, column 14
+ when compiling lustre program should_work/decl.lus
+
+
+../utils/test_lus2lic_no_node should_work/simple.lus
+	File "objlinux/socExec.ml", line 202, column 22
+ when compiling lustre program should_work/simple.lus
+
 
 * Packages, modeles, etc.
 ** STARTED Il ne detecte plus les erreurs de type lors d'instanciation de noeuds
diff --git a/todo.org_archive b/todo.org_archive
index d9bf3ff15d85babdd81fe0bf5a1fa1370dc3cc7e..3ce085f030be50bc58c47e362a54ede57f1ee212 100644
--- a/todo.org_archive
+++ b/todo.org_archive
@@ -971,6 +971,18 @@ et aussi :
 ../utils/test_lus2lic_no_node should_work/predefOp.lus
 file:test/should_work/predefOp.lus
 
+* TODO Lurette trouve un mismatch sur ce prog au step 2
+   - State "TODO"       from ""           [2013-05-10 Fri 17:08]
+  :PROPERTIES:
+  :ARCHIVE_TIME: 2013-06-04 Tue 14:16
+  :ARCHIVE_FILE: ~/lus2lic/todo.org
+  :ARCHIVE_OLPATH: lus2lic -exec
+  :ARCHIVE_CATEGORY: lv6
+  :ARCHIVE_TODO: TODO
+  :END:
+../utils/test_lus2lic_no_node should_work/cond01.lus
+
+