diff --git a/_tags b/_tags
index cc4ff346bce5a5fc7475c7cc12483afdeec741f6..9437835e4b6c49aa44730eadd5f148a69cd586a0 100644
--- a/_tags
+++ b/_tags
@@ -25,3 +25,4 @@
 <src/*.ml{,i}>: pkg_str
 <src/*.ml{,i}>: pkg_unix
 # OASIS_STOP
+
diff --git a/src/lic2soc.ml b/src/lic2soc.ml
index 5f5d4a269aca20362a05393ffa47134d0fcb408d..6f81befb212a9402ed87e7b0340c91eede82b663 100644
--- a/src/lic2soc.ml
+++ b/src/lic2soc.ml
@@ -1,4 +1,6 @@
-(** Time-stamp: <modified the 20/06/2014 (at 08:14) by Erwan Jahier> *)
+(** Time-stamp: <modified the 23/06/2014 (at 16:24) by Erwan Jahier> *)
+
+(* XXX ce module est mal écrit. A reprendre. (R1) *)
  
 open Lxm
 open Lic
@@ -258,18 +260,29 @@ let soc_profile_of_node: Lic.node_exp -> Soc.var list * Soc.var list =
     let outputs = List.map lic_to_soc_var n.Lic.outlist_eff in
     inputs, outputs 
 
-let (make_soc_key_of_node_exp : Lic.node_key -> Lic.slice_info option -> Data.t list -> Soc.key) =
-fun nk si_opt vl -> 
-  LicDump.string_of_node_key_rec false nk, vl, 
-  (match si_opt with
-    | None -> Soc.Nomore 
-    | Some si -> Soc.Slic(si.Lic.se_first,si.Lic.se_last,si.Lic.se_step))
+let (make_soc_key_of_node_key : Lic.node_key -> Lic.slice_info option -> Data.t list -> Soc.key) =
+  fun nk si_opt vl ->
+    let key_opt =
+    (match si_opt with
+      | None -> Soc.Nomore  
+      | Some si -> Soc.Slic(si.Lic.se_first,si.Lic.se_last,si.Lic.se_step))
+    in
+    let key_opt = 
+      if (snd (fst nk)) = "condact" then (
+        assert (key_opt=Soc.Nomore);
+        Soc.MemInit(Soc.Const("_true", Data.Bool)) (* the first step flag *)
+      ) else (
+        key_opt
+      )
+    in
+    LicDump.string_of_node_key_rec false nk, vl, key_opt
+
 
 let (soc_key_of_node_exp : Lic.node_exp -> Soc.key) =
   fun n -> 
     let svi,svo = soc_profile_of_node n in
-    let sk = make_soc_key_of_node_exp n.node_key_eff None (List.map snd  (svi@svo)) in
-    sk
+    let (id,tl,key_opt) = make_soc_key_of_node_key n.node_key_eff None (List.map snd (svi@svo)) in
+    (id,tl,key_opt)
 
 (* XXX duplicated code with get_leaf *)
 let rec (val_exp_to_filter: LicPrg.t -> Lic.val_exp -> Soc.var_expr) =
@@ -401,7 +414,7 @@ let (make_instance :
       | [] -> (
         match soc.Soc.have_mem with
           | None -> ctx, None
-          | Some (_) -> (* pre/fby *)
+          | Some (_) -> (* pre/fby/arrow/condact  *)
             let ctx, m = create_instance_from_soc ctx soc in
             ctx, Some(m)
       )
@@ -418,19 +431,20 @@ let (make_instance :
 type e2a_acc = ctx * action list * Soc.var_expr list * Soc.instance list * ActionsDeps.t
 
 
-(* Béquille en attendant mieux *)
-let by_pos_op_to_soc_ident = function
-  | PRE  -> "Lustre::pre"
-  | ARROW -> "Lustre::arrow" 
-  | FBY-> "Lustre::fby"
-  | CURRENT -> "Lustre::current"
-  | CONCAT-> "Lustre::concat"
-  | ARRAY  -> "Lustre::array"
-  | ARRAY_SLICE _ -> "Lustre::array_slice"
-  | HAT _ -> "Lustre::hat"
-  | PREDEF_CALL n 
-  | CALL n -> LicDump.string_of_node_key_rec false n.it
-  | _  -> assert false
+(* XXX Béquille en attendant mieux *)
+let (node_key_of_pos_op : Lic.by_pos_op -> Lic.node_key) = fun op -> 
+  match op with
+    | PRE  -> ("","Lustre::pre"),[]
+    | ARROW -> ("","Lustre::arrow" ),[]
+    | FBY-> ("","Lustre::fby"),[]
+    | CURRENT -> ("","Lustre::current"),[]
+    | CONCAT-> ("","Lustre::concat"),[]
+    | ARRAY  -> ("","Lustre::array"),[]
+    | ARRAY_SLICE _ -> ("","Lustre::array_slice"),[]
+    | HAT _ -> ("","Lustre::hat"),[]
+    | CALL n | PREDEF_CALL n -> n.it
+    | _  -> assert false
+
 
 
 let (get_exp_type : Soc.var_expr list -> Data.t list) =
@@ -506,7 +520,6 @@ let rec (actions_of_expression_acc: Lxm.t -> Soc.tbl ->
               | CALL _ | PREDEF_CALL _
               | HAT _ | ARRAY | PRE | ARROW | FBY  | CONCAT -> (
                 (* retreive the soc of "expr" in soc_tbl *)
-                let id = by_pos_op_to_soc_ident by_pos_op_flg.it in 
                 let soc : Soc.t =
                   let args_types : Data.t list =
                     List.map lic_to_data_type
@@ -518,24 +531,25 @@ let rec (actions_of_expression_acc: Lxm.t -> Soc.tbl ->
                   let si_opt = match by_pos_op_flg.it with
                       Lic.ARRAY_SLICE si -> Some si | _ -> None
                   in
-                  let sk = make_soc_key_of_node_exp (("",id),[]) si_opt full_profile in
+                  let node_key = node_key_of_pos_op by_pos_op_flg.it in 
+                  let sk = make_soc_key_of_node_key node_key si_opt full_profile in
                   let (sk_name, sk_prof,_) = sk in
                   let sk,fby_init_opt = 
                     let init = val_exp_to_filter ctx.prg (List.hd val_exp_list) in
-                    if by_pos_op_flg.it = Lic.FBY then  
+                    if by_pos_op_flg.it = Lic.FBY then
                       (sk_name, sk_prof, Soc.MemInit init), Some init
-                    else if by_pos_op_flg.it = Lic.ARROW then  
+                    else if by_pos_op_flg.it = Lic.ARROW then
                       let init = Soc.Const("_true", Data.Bool) in
                       (sk_name, sk_prof, Soc.MemInit init), Some init
                     else
                       sk, None
                   in
-                  try Soc.SocMap.find sk soc_tbl 
+                  try Soc.SocMap.find sk soc_tbl
                   with Not_found ->
                     Verbose.exe ~flag:dbg (fun () ->
                       let l = Soc.SocMap.bindings soc_tbl in
                       let kl = fst (List.split l) in
-                      let klstr = List.map SocUtils.string_of_soc_key kl in                      
+                      let klstr = List.map SocUtils.string_of_soc_key kl in
                       print_string ("\n********* Cannot find the soc.key " ^
                                        (SocUtils.string_of_soc_key sk) ^ "  in \n\t" ^
                                        (String.concat "\n\t" klstr)^"\n");
@@ -555,7 +569,7 @@ let rec (actions_of_expression_acc: Lxm.t -> Soc.tbl ->
               (*               let res_type = List.map lic_to_data_type expr.ve_typ in *)
               let res_type =  get_exp_type lpl in
               let full_profile = args_types @ res_type in
-              let sk = make_soc_key_of_node_exp (("Lustre","merge"),[]) None full_profile in
+              let sk = make_soc_key_of_node_key (("Lustre","merge"),[]) None full_profile in
               try Soc.SocMap.find sk soc_tbl 
               with Not_found ->
                 Verbose.exe ~flag:dbg (fun () ->
@@ -654,6 +668,7 @@ let info msg =
   let t = Sys.time() in
   Verbose.exe ~level:1 (fun () -> Printf.eprintf "%4.4f: %s%!" t msg; flush stderr)
 
+
 let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) = 
   fun prog mnk ->
     let rec (process_node : Lic.node_key -> Soc.tbl -> Soc.key * Soc.tbl) =
@@ -724,8 +739,12 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
           | ctx,Some inst -> ctx,[inst]
           | ctx,None -> ctx,[]
       in
+      let soc_key = 
+        let x,y,_=soc_key in
+        x,y, Soc.MemInit(Soc.Const("_true", Data.Bool)) (* the first step flag *)
+      in
       let soc = {
-        Soc.key       = soc_key;
+        Soc.key       = soc_key ;
         Soc.profile   = soc_profile_of_node node;
         Soc.instances = inst ;
         Soc.step      = [
@@ -737,7 +756,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
             impl     = Condact(nsk, List.flatten (List.map lic2soc_const vel));
           }
         ];
-        Soc.have_mem    = None;
+        Soc.have_mem    = Some Data.Bool; (* to hold the first step flag *)
         Soc.precedences = [];
       } 
       in 
@@ -749,7 +768,7 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
         info "Lic2soc.soc_of_node...\n";
         let io_list = node.Lic.inlist_eff @ node.Lic.outlist_eff in 
         let io_type = List.map (fun vi -> lic_to_data_type vi.var_type_eff) io_list in
-        let soc_key = make_soc_key_of_node_exp node.Lic.node_key_eff None io_type in
+        let soc_key = make_soc_key_of_node_key node.Lic.node_key_eff None io_type in
         let lxm = node.Lic.lxm in
         let ctx = create_context licprg in
         let (soc_of_body: Lic.node_body -> Soc.tbl -> (ctx * Soc.t * Soc.tbl) option) =
@@ -850,7 +869,8 @@ let rec f: (LicPrg.t -> Lic.node_key -> Soc.key * Soc.tbl) =
               | ("condact"), [
                 ConstStaticArgLic("dflt",const); NodeStaticArgLic ("oper",condact_node)
               ] -> (
-                let soc_tbl,soc = make_condact_soc node condact_node soc_key soc_tbl ctx lxm [const] in
+                let soc_tbl,soc =
+                  make_condact_soc node condact_node soc_key soc_tbl ctx lxm [const] in
                 Some(ctx, soc, soc_tbl)
               )
               | e -> 
diff --git a/src/soc2c.ml b/src/soc2c.ml
index 800e945e1adce962fa65410f9ebf799d403447ac..5938276c8e58b301b59ddc966fecb5219c76d6f2 100644
--- a/src/soc2c.ml
+++ b/src/soc2c.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 20/06/2014 (at 10:00) by Erwan Jahier> *)
+(* Time-stamp: <modified the 20/06/2014 (at 16:44) by Erwan Jahier> *)
 
 
 (* let put (os: out_channel) (fmt:('a, unit, string, unit) format4) : 'a = *)
@@ -64,32 +64,10 @@ let (string_of_soc_key : Soc.key -> string) =
 let string_of_flow_decl (id, t) = 
   Printf.sprintf "   %s;\n" (type_to_string t (id2s id)) 
 
-let (mem_interface : Soc.t -> string -> bool) =
-  fun soc id -> 
-    let ins,outs = soc.profile in
-    List.mem_assoc id ins || List.mem_assoc id outs
 
-let (is_memory_less : Soc.t -> bool) =
-  fun soc -> 
-    soc.have_mem = None && soc.instances = []
-
-let rec (string_of_var_expr: Soc.t -> Soc.var_expr -> string) = 
-  fun soc -> function
-    | Const("true", _) -> "_true"
-    | Const("false", _) -> "_false"
-    | Const(id, _) -> id2s id
-    | Var ("_memory",_)   -> (* Clutch! it's not an interface var... *) "ctx->_memory" 
-    | Var (id,_)   -> 
-      if not (mem_interface soc id) then id2s id 
-      else if is_memory_less soc then
-          sprintf "%s.%s" (get_ctx_name soc.key) (id2s id)
-        else 
-          sprintf "ctx->%s" (id2s id)
-    | Field(f, id,_) -> sprintf "%s.%s" (string_of_var_expr soc f) (id2s id) 
-    | Index(f, index,_) -> sprintf "%s[%i]" (string_of_var_expr soc f) index
-    | Slice(f,fi,la,st,wi,vt) -> sprintf "%s[%i..%i step %i]; // XXX fixme!\n" 
-      (string_of_var_expr soc f) fi la st
+let (is_memory_less : Soc.t -> bool) = SocUtils.is_memory_less
 
+let string_of_var_expr = Soc2cUtil.string_of_var_expr
 open Soc
 
 let (gao2c : Soc.tbl -> 'a soc_pp -> Soc.gao -> unit) =
@@ -110,7 +88,7 @@ let (gao2c : Soc.tbl -> 'a soc_pp -> Soc.gao -> unit) =
           let ctx_opt = 
             let il,ol = sp.soc.profile in
             if List.mem_assoc id il || List.mem_assoc id ol then
-              (if is_memory_less sp.soc then Soc2cUtil.ML_IO sp.soc.key 
+              (if SocUtils.is_memory_less sp.soc then Soc2cUtil.ML_IO sp.soc.key 
                else Soc2cUtil.M_IO)
             else Soc2cUtil.Local 
           in
diff --git a/src/soc2cUtil.ml b/src/soc2cUtil.ml
index 35bbd87abb8dcbdaca0f3e04cda51720c3aa2f4a..5f749b70ab7475b00e7592d6b9131793526f90e9 100644
--- a/src/soc2cUtil.ml
+++ b/src/soc2cUtil.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 19/06/2014 (at 10:42) by Erwan Jahier> *)
+(* Time-stamp: <modified the 20/06/2014 (at 17:23) by Erwan Jahier> *)
 
 
 (* exported *) 
@@ -27,7 +27,6 @@ let (step_name : Soc.key -> string -> string) =
     let str = Printf.sprintf "%s_%s" (Soc2cIdent.get_soc_name sk) sm in
     id2s str
 
-
 type var_kind = (* XXX poor names: fixme! *)
   | ML_IO of Soc.key (* for idents that are part of a MemoryLess soc interface *)
   | M_IO (* for idents that are part of a soc interface with Memories*)
@@ -51,7 +50,7 @@ let (gen_step_call : Soc.t -> Soc.t -> string list -> string list ->
           List.map2 (fun (name, t) ve -> 
             gen_assign t (Printf.sprintf "%s.%s" ctx name) ve) 
             inputs vel_in
-        ) with _ -> assert false (* XXX not all parameters are necessaryly used! *)
+        ) with _ -> assert false (* are all parameters necessaryly used? *)
         in
         (String.concat "" l) 
     in
@@ -70,3 +69,27 @@ let (gen_step_call : Soc.t -> Soc.t -> string list -> string list ->
     let str = Printf.sprintf "  %s(%s); \n" (step_name called_soc.key sname) step_arg in
     (si_str ^ str ^ so_str)
 
+
+let (mem_interface : Soc.t -> string -> bool) =
+  fun soc id -> 
+    let ins,outs = soc.profile in
+    List.mem_assoc id ins || List.mem_assoc id outs
+
+open Soc2cIdent
+
+let rec (string_of_var_expr: Soc.t -> Soc.var_expr -> string) = 
+  fun soc -> function
+    | Const("true", _) -> "_true"
+    | Const("false", _) -> "_false"
+    | Const(id, _) -> id2s id
+    | Var ("_memory",_)   -> (* Clutch! it's not an interface var... *) "ctx->_memory" 
+    | Var (id,_)   -> 
+      if not (mem_interface soc id) then id2s id 
+      else if SocUtils.is_memory_less soc then
+          Printf.sprintf "%s.%s" (get_ctx_name soc.key) (id2s id)
+        else 
+          Printf.sprintf "ctx->%s" (id2s id)
+    | Field(f, id,_) -> Printf.sprintf "%s.%s" (string_of_var_expr soc f) (id2s id) 
+    | Index(f, index,_) -> Printf.sprintf "%s[%i]" (string_of_var_expr soc f) index
+    | Slice(f,fi,la,st,wi,vt) -> Printf.sprintf "%s[%i..%i step %i]; // XXX fixme!\n" 
+      (string_of_var_expr soc f) fi la st
diff --git a/src/socExec.ml b/src/socExec.ml
index d595cd8c78c47b7ed8ccad38bd630c7f5e2fbc97..6815febbdb08c0f64cf93bc44b7b74e38781f837 100644
--- a/src/socExec.ml
+++ b/src/socExec.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 19/06/2014 (at 14:32) by Erwan Jahier> *)
+(* Time-stamp: <modified the 20/06/2014 (at 11:29) by Erwan Jahier> *)
 
 open Soc
 open Data
@@ -60,7 +60,7 @@ let rec (soc_step : Soc.step_method -> Soc.tbl -> Soc.t -> SocExecValue.ctx
         let clk = SocExecValue.get_value ctx (Var ("i0",Bool)) in
         let vel_in, vel_out = soc.profile in
         let vel_in  =  List.map (fun x -> Var x) (List.tl vel_in) in
-        let vel_out =  List.map (fun x -> Var x) vel_out in        
+        let vel_out =  List.map (fun x -> Var x) vel_out in
         let node_soc = SocUtils.find step.lxm node_sk soc_tbl in
         let inst_name =
           match soc.instances with
diff --git a/src/socPredef2c.ml b/src/socPredef2c.ml
index f3c36c1b5c76b329640bf505f79ec67f226ff882..76e2d716797ac1c0c3c08840672ab696bfe697d9 100644
--- a/src/socPredef2c.ml
+++ b/src/socPredef2c.ml
@@ -1,4 +1,4 @@
-(* Time-stamp: <modified the 20/06/2014 (at 10:12) by Erwan Jahier> *)
+(* Time-stamp: <modified the 23/06/2014 (at 16:54) by Erwan Jahier> *)
 
 open Data
 open Soc
@@ -207,7 +207,6 @@ let (get_iterator : Soc.t -> string -> Soc.t -> int -> string) =
   fun soc iterator it_soc n -> 
     let iter_inputs,iter_outputs = soc.profile in
     let node_step = match soc.step with [step] -> step.name  | _ ->  assert false in
-
     let step_args, ctx, array_index,ctx_access = 
       match soc.instances with
         | [] -> (
@@ -261,45 +260,45 @@ let (get_iterator : Soc.t -> string -> Soc.t -> int -> string) =
  
 
 
+
 (* exported *)
 let (get_condact : Soc.t -> Soc.t -> var_expr list -> string ) = 
   fun soc condact_soc el -> 
-    ""
-(*       | Condact(node_sk, dft_cst) -> (
-        let clk = SocExecValue.get_value ctx (Var ("i0",Bool)) in
-        let vel_in, vel_out = soc.profile in
-        let vel_in  =  List.map (fun x -> Var x) (List.tl vel_in) in
-        let vel_out =  List.map (fun x -> Var x) vel_out in        
-        let node_soc = SocUtils.find step.lxm node_sk soc_tbl in
+    let ctx = get_ctx_name soc.key in
+    let buff = ref "" in
+    let add str = buff:=!buff^(str^"\n") in
+
+    let clk = Printf.sprintf "ctx->i0" in
+    let string_of_var_soc (id,_) = "ctx->"^(id2s id) in
+    let vel_in,vel_out = soc.profile in
+    let vel_in = List.tl vel_in in
+    let vel_in = List.map string_of_var_soc vel_in in
+    let vel_out = List.map string_of_var_soc vel_out in
+
+    add (Printf.sprintf "  if (%s == _true) { " clk); 
+    if SocUtils.is_memory_less condact_soc then
+      let condact_ctx = get_ctx_name condact_soc.key in
+      add (Soc2cUtil.gen_step_call soc condact_soc vel_out vel_in condact_ctx "step" "")
+    else (
+      let condact_ctx = 
         let inst_name =
           match soc.instances with
-            | [] -> let (proc_name,_,_) = node_soc.key in proc_name
-            | [inst] -> fst inst
+            | [inst] -> (id2s (fst inst))
             | _ -> assert false
         in
-        let path_saved = ctx.cpath in
-        let ctx = { ctx with cpath=inst_name::ctx.cpath } in
-        let ctx =
-          if clk = B true then
-            let node_step = match node_soc.step with [step] -> step | _ -> assert false in
-            let ctx = do_step inst_name node_step ctx soc_tbl node_soc vel_in vel_out in
-            { ctx with cpath=path_saved }
-          else
-            let first_step = Var ("$first_step",Bool) in
-            let v = get_value ctx first_step in
-            if v = U ||  v = B true then
-              (* We are on the first step of node_soc;
-                 - we assign the output var to the default values *)
-              let ctx =  { ctx with cpath=path_saved } in
-              List.fold_left2 assign_expr ctx dft_cst vel_out
-            else
-              (* We are not on the first step of node_soc; hence we do nothing 
-                 and the output will keep their previous value. *) 
-              { ctx with cpath=path_saved }
-        in
-        let ctx = { ctx with s = sadd ctx.s ("$first_step"::ctx.cpath) (B false) } in
-        ctx
- *)
+        Printf.sprintf  "ctx->%s" inst_name
+      in
+      add (Soc2cUtil.gen_step_call soc condact_soc vel_out vel_in 
+             condact_ctx "step" ("&"^condact_ctx))
+    );
+    add "    ctx->_memory = _false;";
+    add "   } else if (ctx->_memory == _true) {";
+    List.iter2 (fun var ve -> 
+      add (Printf.sprintf "    %s = %s;" var (Soc2cUtil.string_of_var_expr soc ve) )
+    ) vel_out el ;
+    add "    ctx->_memory = _false;";
+    add "  }";
+    !buff
 
 
 (* exported *)
diff --git a/src/socUtils.ml b/src/socUtils.ml
index 7bfb506d831c9afe2c04165ac3ac34e3b6c906c8..b743e5b09fce6e7953e0a794207a22407279b44c 100644
--- a/src/socUtils.ml
+++ b/src/socUtils.ml
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 11/06/2014 (at 18:16) by Erwan Jahier> *)
+(** Time-stamp: <modified the 20/06/2014 (at 10:32) by Erwan Jahier> *)
 
 
 open Soc
@@ -347,3 +347,7 @@ let (my_string_of_float_precision : int option -> float -> string) =
       | Some p -> 
         let precision_str = string_of_int p in 
         format_float ("%." ^ precision_str ^ "f") f 
+
+let (is_memory_less : Soc.t -> bool) =
+  fun soc -> 
+    soc.have_mem = None && soc.instances = []
diff --git a/src/socUtils.mli b/src/socUtils.mli
index 71ab4b1ac84b680cb5544f6c8b4003e653e60e27..890089420b395808a237cd7a692d61b459006b53 100644
--- a/src/socUtils.mli
+++ b/src/socUtils.mli
@@ -1,4 +1,4 @@
-(** Time-stamp: <modified the 04/04/2014 (at 14:45) by Erwan Jahier> *)
+(** Time-stamp: <modified the 20/06/2014 (at 10:32) by Erwan Jahier> *)
 
 
 (** Donne toute les méthodes d'un composant. *)
@@ -48,3 +48,5 @@ val find_no_exc : Soc.key -> Soc.tbl -> Soc.t
 (* gen_index_list 5 = [0;1;2;3;4] *)
 val gen_index_list : int -> int list
 val my_string_of_float_precision : int option -> float -> string
+
+val is_memory_less : Soc.t -> bool
diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index 218f042e4926a84e3f91dc77117813a40dfa9747..7587c6ee10ae6b0c94ef65165981c37ac994a336 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jun 20 10:12:30 2014
+Test Run By jahier on Mon Jun 23 16:54:59 2014
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -567,9 +567,6 @@ PASS: ./lus2lic {-2c should_work/morel4.lus -n morel4}
 FAIL: Check that the generated C code compiles  : gcc morel4_morel4.c morel4_morel4_loop.c 
 PASS: ./lus2lic {-o /tmp/trivial_array.lic should_work/trivial_array.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/trivial_array.ec should_work/trivial_array.lus}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/trivial_array.lus
-PASS: ./lus2lic {-2c should_work/trivial_array.lus -n trivial_array}
-PASS: gcc trivial_array_trivial_array.c trivial_array_trivial_array_loop.c 
 PASS: ./lus2lic {-o /tmp/param_node4.lic should_work/param_node4.lus}
 PASS: ./lus2lic {-ec -o /tmp/param_node4.ec should_work/param_node4.lus}
 PASS: ./myec2c {-o /tmp/param_node4.c /tmp/param_node4.ec}
@@ -1485,9 +1482,9 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		1271
-# of unexpected failures	144
+# of expected passes		1269
+# of unexpected failures	143
 # of unexpected successes	21
 # of expected failures		37
-testcase ./lus2lic.tests/non-reg.exp completed in 137 seconds
-testcase ./lus2lic.tests/progression.exp completed in 1 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 130 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/lus2lic.time b/test/lus2lic.time
index 191e57e3a805c474d95fafa25eb0f269f76f1008..6879740d65575caa2a8a41db20e481570208f3e8 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -1,2 +1,2 @@
-testcase ./lus2lic.tests/non-reg.exp completed in 137 seconds
-testcase ./lus2lic.tests/progression.exp completed in 1 seconds
+testcase ./lus2lic.tests/non-reg.exp completed in 130 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/test_condact.lus b/test/should_work/test_condact.lus
index 8578352ff3322b764951723d0d9f351d67382e75..f1aaf7ac5787019c449119d7ecbcf15343749dc7 100644
--- a/test/should_work/test_condact.lus
+++ b/test/should_work/test_condact.lus
@@ -5,6 +5,12 @@ let
 	y = 0 fby y + 1;
 	z = x fby z + a;
 tel
+node toto_nm(a,b: int) returns (x,y,z: int);
+let
+	x = a + b;
+	y =   1;
+	z =   a;
+tel
 
 node test_condact(c: bool; a,b:int) returns (x,y,z: int);
 let