diff --git a/test/lus2lic.sum b/test/lus2lic.sum
index ff24668f9c34dc7baaef7836a72429e7db65af74..f97a4b7a11331140ff40eccf21f37598c35ba58b 100644
--- a/test/lus2lic.sum
+++ b/test/lus2lic.sum
@@ -1,4 +1,4 @@
-Test Run By jahier on Fri Jul 11 16:15:55 2014
+Test Run By jahier on Thu Aug  7 11:48:30 2014
 Native configuration is i686-pc-linux-gnu
 
 		=== lus2lic tests ===
@@ -33,7 +33,6 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 PASS: ./lus2lic {-o /tmp/normal.lic should_work/normal.lus}
 PASS: ./lus2lic {-ec -o /tmp/normal.ec should_work/normal.lus}
 PASS: ./myec2c {-o /tmp/normal.c /tmp/normal.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/normal.lus
 PASS: ./lus2lic {-2c should_work/normal.lus -n normal}
 PASS: gcc normal_normal.c normal_normal_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/normal.lus
@@ -47,14 +46,12 @@ PASS: ../utils/compare_exec_and_2c should_work/nodeparam.lus
 PASS: ./lus2lic {-o /tmp/enum0.lic should_work/enum0.lus}
 PASS: ./lus2lic {-ec -o /tmp/enum0.ec should_work/enum0.lus}
 PASS: ./myec2c {-o /tmp/enum0.c /tmp/enum0.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/enum0.lus
 PASS: ./lus2lic {-2c should_work/enum0.lus -n enum0}
 PASS: gcc enum0_enum0.c enum0_enum0_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/enum0.lus
 PASS: ./lus2lic {-o /tmp/ck6.lic should_work/ck6.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck6.ec should_work/ck6.lus}
 PASS: ./myec2c {-o /tmp/ck6.c /tmp/ck6.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck6.lus
 PASS: ./lus2lic {-2c should_work/ck6.lus -n ck6}
 PASS: gcc ck6_ck6.c ck6_ck6_ext.c ck6_ck6_loop.c 
 PASS: ./lus2lic {-o /tmp/Gyroscope2.lic should_work/Gyroscope2.lus}
@@ -81,17 +78,14 @@ PASS: ../utils/compare_exec_and_2c should_work/dep.lus
 PASS: ./lus2lic {-o /tmp/ELMU.lic should_work/ELMU.lus}
 PASS: ./lus2lic {-ec -o /tmp/ELMU.ec should_work/ELMU.lus}
 PASS: ./myec2c {-o /tmp/ELMU.c /tmp/ELMU.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/ELMU.lus
 PASS: ./lus2lic {-2c should_work/ELMU.lus -n ELMU}
 PASS: gcc ELMU_ELMU.c ELMU_ELMU_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/ELMU.lus
 PASS: ./lus2lic {-o /tmp/testPilote.lic should_work/testPilote.lus}
 PASS: ./lus2lic {-ec -o /tmp/testPilote.ec should_work/testPilote.lus}
 PASS: ./myec2c {-o /tmp/testPilote.c /tmp/testPilote.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testPilote.lus
 PASS: ./lus2lic {-2c should_work/testPilote.lus -n testPilote}
 PASS: gcc testPilote_testPilote.c testPilote_testPilote_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/testPilote.lus
 PASS: ./lus2lic {-o /tmp/redIf.lic should_work/redIf.lus}
 PASS: ./lus2lic {-ec -o /tmp/redIf.ec should_work/redIf.lus}
 PASS: ./myec2c {-o /tmp/redIf.c /tmp/redIf.ec}
@@ -102,7 +96,6 @@ PASS: ../utils/compare_exec_and_2c should_work/redIf.lus
 PASS: ./lus2lic {-o /tmp/t0.lic should_work/t0.lus}
 PASS: ./lus2lic {-ec -o /tmp/t0.ec should_work/t0.lus}
 PASS: ./myec2c {-o /tmp/t0.c /tmp/t0.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/t0.lus
 PASS: ./lus2lic {-2c should_work/t0.lus -n t0}
 PASS: gcc t0_t0.c t0_t0_loop.c 
 PASS: ./lus2lic {-o /tmp/lucky.lic should_work/lucky.lus}
@@ -171,7 +164,6 @@ PASS: ../utils/compare_exec_and_2c should_work/mappredef.lus
 PASS: ./lus2lic {-o /tmp/call06.lic should_work/call06.lus}
 PASS: ./lus2lic {-ec -o /tmp/call06.ec should_work/call06.lus}
 PASS: ./myec2c {-o /tmp/call06.c /tmp/call06.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call06.lus
 PASS: ./lus2lic {-2c should_work/call06.lus -n call06}
 PASS: gcc call06_call06.c call06_call06_ext.c call06_call06_loop.c 
 PASS: ./lus2lic {-o /tmp/deSimone.lic should_work/deSimone.lus}
@@ -212,10 +204,8 @@ PASS: ../utils/compare_exec_and_2c should_work/toolate.lus
 PASS: ./lus2lic {-o /tmp/testCapt.lic should_work/testCapt.lus}
 PASS: ./lus2lic {-ec -o /tmp/testCapt.ec should_work/testCapt.lus}
 PASS: ./myec2c {-o /tmp/testCapt.c /tmp/testCapt.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testCapt.lus
 PASS: ./lus2lic {-2c should_work/testCapt.lus -n testCapt}
 PASS: gcc testCapt_testCapt.c testCapt_testCapt_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/testCapt.lus
 PASS: ./lus2lic {-o /tmp/nc7.lic should_work/nc7.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc7.ec should_work/nc7.lus}
 PASS: ./myec2c {-o /tmp/nc7.c /tmp/nc7.ec}
@@ -247,7 +237,6 @@ PASS: ../utils/compare_exec_and_2c should_work/nc9.lus
 PASS: ./lus2lic {-o /tmp/packageTableau.lic should_work/packageTableau.lus}
 PASS: ./lus2lic {-ec -o /tmp/packageTableau.ec should_work/packageTableau.lus}
 PASS: ./myec2c {-o /tmp/packageTableau.c /tmp/packageTableau.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packageTableau.lus
 PASS: ./lus2lic {-2c should_work/packageTableau.lus -n packageTableau}
 PASS: ./lus2lic {-o /tmp/test_poly.lic should_work/test_poly.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_poly.ec should_work/test_poly.lus}
@@ -266,7 +255,6 @@ PASS: ../utils/compare_exec_and_2c should_work/nc8.lus
 PASS: ./lus2lic {-o /tmp/minmax5.lic should_work/minmax5.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax5.ec should_work/minmax5.lus}
 PASS: ./myec2c {-o /tmp/minmax5.c /tmp/minmax5.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/minmax5.lus
 PASS: ./lus2lic {-2c should_work/minmax5.lus -n minmax5}
 PASS: gcc minmax5_minmax5.c minmax5_minmax5_ext.c minmax5_minmax5_loop.c 
 PASS: ./lus2lic {-o /tmp/mm1.lic should_work/mm1.lus}
@@ -293,19 +281,16 @@ PASS: ../utils/compare_exec_and_2c should_work/iter.lus
 PASS: ./lus2lic {-o /tmp/call05.lic should_work/call05.lus}
 PASS: ./lus2lic {-ec -o /tmp/call05.ec should_work/call05.lus}
 PASS: ./myec2c {-o /tmp/call05.c /tmp/call05.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call05.lus
 PASS: ./lus2lic {-2c should_work/call05.lus -n call05}
 PASS: gcc call05_call05.c call05_call05_ext.c call05_call05_loop.c 
 PASS: ./lus2lic {-o /tmp/Watch.lic should_work/Watch.lus}
 PASS: ./lus2lic {-ec -o /tmp/Watch.ec should_work/Watch.lus}
 PASS: ./myec2c {-o /tmp/Watch.c /tmp/Watch.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Watch.lus
 PASS: ./lus2lic {-2c should_work/Watch.lus -n Watch}
 PASS: gcc Watch_Watch.c Watch_Watch_ext.c Watch_Watch_loop.c 
 PASS: ./lus2lic {-o /tmp/testBoite.lic should_work/testBoite.lus}
 PASS: ./lus2lic {-ec -o /tmp/testBoite.ec should_work/testBoite.lus}
 PASS: ./myec2c {-o /tmp/testBoite.c /tmp/testBoite.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/testBoite.lus
 PASS: ./lus2lic {-2c should_work/testBoite.lus -n testBoite}
 PASS: ./lus2lic {-o /tmp/node_caller1.lic should_work/node_caller1.lus}
 PASS: ./lus2lic {-ec -o /tmp/node_caller1.ec should_work/node_caller1.lus}
@@ -359,7 +344,6 @@ PASS: ../utils/compare_exec_and_2c should_work/cst.lus
 PASS: ./lus2lic {-o /tmp/minmax5_random.lic should_work/minmax5_random.lus}
 PASS: ./lus2lic {-ec -o /tmp/minmax5_random.ec should_work/minmax5_random.lus}
 PASS: ./myec2c {-o /tmp/minmax5_random.c /tmp/minmax5_random.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/minmax5_random.lus
 PASS: ./lus2lic {-2c should_work/minmax5_random.lus -n minmax5_random}
 PASS: gcc minmax5_random_minmax5_random.c minmax5_random_minmax5_random_ext.c minmax5_random_minmax5_random_loop.c 
 PASS: ./lus2lic {-o /tmp/matrice2.lic should_work/matrice2.lus}
@@ -421,6 +405,9 @@ PASS: ../utils/compare_exec_and_2c should_work/mm22.lus
 PASS: ./lus2lic {-o /tmp/array_concat2.lic should_work/array_concat2.lus}
 PASS: ./lus2lic {-ec -o /tmp/array_concat2.ec should_work/array_concat2.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/array_concat2.c /tmp/array_concat2.ec}
+PASS: ./lus2lic {-2c should_work/array_concat2.lus -n array_concat2}
+PASS: gcc array_concat2_array_concat2.c array_concat2_array_concat2_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/array_concat2.lus
 PASS: ./lus2lic {-o /tmp/is_stable.lic should_work/is_stable.lus}
 PASS: ./lus2lic {-ec -o /tmp/is_stable.ec should_work/is_stable.lus}
 PASS: ./myec2c {-o /tmp/is_stable.c /tmp/is_stable.ec}
@@ -431,12 +418,10 @@ PASS: ../utils/compare_exec_and_2c should_work/is_stable.lus
 PASS: ./lus2lic {-o /tmp/test_clash.lic should_work/test_clash.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_clash.ec should_work/test_clash.lus}
 PASS: ./myec2c {-o /tmp/test_clash.c /tmp/test_clash.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_clash.lus
 PASS: ./lus2lic {-2c should_work/test_clash.lus -n test_clash}
 PASS: ./lus2lic {-o /tmp/model2.lic should_work/model2.lus}
 PASS: ./lus2lic {-ec -o /tmp/model2.ec should_work/model2.lus}
 PASS: ./myec2c {-o /tmp/model2.c /tmp/model2.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/model2.lus
 PASS: ./lus2lic {-2c should_work/model2.lus -n model2}
 PASS: ./lus2lic {-o /tmp/onlyroll2.lic should_work/onlyroll2.lus}
 PASS: ./lus2lic {-ec -o /tmp/onlyroll2.ec should_work/onlyroll2.lus}
@@ -452,13 +437,10 @@ FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node shou
 PASS: ./lus2lic {-2c should_work/modes3x2_v2.lus -n modes3x2_v2}
 PASS: gcc modes3x2_v2_modes3x2_v2.c modes3x2_v2_modes3x2_v2_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/modes3x2_v2.lus
-PASS: ./lus2lic {-o /tmp/X6.lic should_work/X6.lus}
-PASS: ./lus2lic {-ec -o /tmp/X6.ec should_work/X6.lus}
-PASS: ./myec2c {-o /tmp/X6.c /tmp/X6.ec}
+FAIL: without any option: ./lus2lic {-o /tmp/X6.lic should_work/X6.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/X6.ec should_work/X6.lus}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/X6.lus
-PASS: ./lus2lic {-2c should_work/X6.lus -n X6}
-PASS: gcc X6_X6.c X6_X6_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/X6.lus
+FAIL: Generate c code  : ./lus2lic {-2c should_work/X6.lus -n X6}
 PASS: ./lus2lic {-o /tmp/zzz2.lic should_work/zzz2.lus}
 PASS: ./lus2lic {-ec -o /tmp/zzz2.ec should_work/zzz2.lus}
 PASS: ./myec2c {-o /tmp/zzz2.c /tmp/zzz2.ec}
@@ -469,7 +451,6 @@ PASS: ../utils/compare_exec_and_2c should_work/zzz2.lus
 PASS: ./lus2lic {-o /tmp/polymorphic_pack.lic should_work/polymorphic_pack.lus}
 PASS: ./lus2lic {-ec -o /tmp/polymorphic_pack.ec should_work/polymorphic_pack.lus}
 PASS: ./myec2c {-o /tmp/polymorphic_pack.c /tmp/polymorphic_pack.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/polymorphic_pack.lus
 PASS: ./lus2lic {-2c should_work/polymorphic_pack.lus -n polymorphic_pack}
 PASS: ./lus2lic {-o /tmp/COUNTER.lic should_work/COUNTER.lus}
 PASS: ./lus2lic {-ec -o /tmp/COUNTER.ec should_work/COUNTER.lus}
@@ -562,7 +543,6 @@ PASS: ../utils/compare_exec_and_2c should_work/shift_ludic.lus
 PASS: ./lus2lic {-o /tmp/pilote-1.0.lic should_work/pilote-1.0.lus}
 PASS: ./lus2lic {-ec -o /tmp/pilote-1.0.ec should_work/pilote-1.0.lus}
 PASS: ./myec2c {-o /tmp/pilote-1.0.c /tmp/pilote-1.0.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/pilote-1.0.lus
 PASS: ./lus2lic {-2c should_work/pilote-1.0.lus -n pilote-1.0}
 PASS: ./lus2lic {-o /tmp/trivial.lic should_work/trivial.lus}
 PASS: ./lus2lic {-ec -o /tmp/trivial.ec should_work/trivial.lus}
@@ -574,7 +554,6 @@ PASS: ../utils/compare_exec_and_2c should_work/trivial.lus
 PASS: ./lus2lic {-o /tmp/packs.lic should_work/packs.lus}
 PASS: ./lus2lic {-ec -o /tmp/packs.ec should_work/packs.lus}
 PASS: ./myec2c {-o /tmp/packs.c /tmp/packs.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packs.lus
 PASS: ./lus2lic {-2c should_work/packs.lus -n packs}
 PASS: ./lus2lic {-o /tmp/sincos.lic should_work/sincos.lus}
 PASS: ./lus2lic {-ec -o /tmp/sincos.ec should_work/sincos.lus}
@@ -586,7 +565,6 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 PASS: ./lus2lic {-o /tmp/newpacks.lic should_work/newpacks.lus}
 PASS: ./lus2lic {-ec -o /tmp/newpacks.ec should_work/newpacks.lus}
 PASS: ./myec2c {-o /tmp/newpacks.c /tmp/newpacks.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/newpacks.lus
 PASS: ./lus2lic {-2c should_work/newpacks.lus -n newpacks}
 PASS: ./lus2lic {-o /tmp/morel5.lic should_work/morel5.lus}
 PASS: ./lus2lic {-ec -o /tmp/morel5.ec should_work/morel5.lus}
@@ -633,13 +611,11 @@ PASS: ../utils/compare_exec_and_2c should_work/testCA.lus
 PASS: ./lus2lic {-o /tmp/test_extern.lic should_work/test_extern.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_extern.ec should_work/test_extern.lus}
 PASS: ./myec2c {-o /tmp/test_extern.c /tmp/test_extern.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_extern.lus
 PASS: ./lus2lic {-2c should_work/test_extern.lus -n test_extern}
 PASS: gcc test_extern_test_extern.c test_extern_test_extern_ext.c test_extern_test_extern_loop.c 
 PASS: ./lus2lic {-o /tmp/deconne.lic should_work/deconne.lus}
 PASS: ./lus2lic {-ec -o /tmp/deconne.ec should_work/deconne.lus}
 PASS: ./myec2c {-o /tmp/deconne.c /tmp/deconne.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/deconne.lus
 PASS: ./lus2lic {-2c should_work/deconne.lus -n deconne}
 PASS: gcc deconne_deconne.c deconne_deconne_ext.c deconne_deconne_loop.c 
 PASS: ./lus2lic {-o /tmp/noAlarm.lic should_work/noAlarm.lus}
@@ -652,7 +628,7 @@ PASS: ../utils/compare_exec_and_2c should_work/noAlarm.lus
 PASS: ./lus2lic {-o /tmp/clock_ite.lic should_work/clock_ite.lus}
 PASS: ./lus2lic {-ec -o /tmp/clock_ite.ec should_work/clock_ite.lus}
 PASS: ./myec2c {-o /tmp/clock_ite.c /tmp/clock_ite.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/clock_ite.lus
+PASS: ../utils/test_lus2lic_no_node should_work/clock_ite.lus
 PASS: ./lus2lic {-2c should_work/clock_ite.lus -n clock_ite}
 PASS: gcc clock_ite_clock_ite.c clock_ite_clock_ite_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/clock_ite.lus
@@ -664,6 +640,9 @@ FAIL: Generate c code  : ./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}
+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: ../utils/compare_exec_and_2c should_work/trivial_array.lus
 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}
@@ -765,10 +744,8 @@ PASS: ../utils/compare_exec_and_2c should_work/over3.lus
 PASS: ./lus2lic {-o /tmp/complex.lic should_work/complex.lus}
 PASS: ./lus2lic {-ec -o /tmp/complex.ec should_work/complex.lus}
 PASS: ./myec2c {-o /tmp/complex.c /tmp/complex.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/complex.lus
 PASS: ./lus2lic {-2c should_work/complex.lus -n complex}
 PASS: gcc complex_complex.c complex_complex_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/complex.lus
 PASS: ./lus2lic {-o /tmp/initial.lic should_work/initial.lus}
 PASS: ./lus2lic {-ec -o /tmp/initial.ec should_work/initial.lus}
 PASS: ./myec2c {-o /tmp/initial.c /tmp/initial.ec}
@@ -779,7 +756,6 @@ PASS: ../utils/compare_exec_and_2c should_work/initial.lus
 PASS: ./lus2lic {-o /tmp/declaration.lic should_work/declaration.lus}
 PASS: ./lus2lic {-ec -o /tmp/declaration.ec should_work/declaration.lus}
 PASS: ./myec2c {-o /tmp/declaration.c /tmp/declaration.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/declaration.lus
 PASS: ./lus2lic {-2c should_work/declaration.lus -n declaration}
 PASS: gcc declaration_declaration.c declaration_declaration_loop.c 
 PASS: ./lus2lic {-o /tmp/PCOND1.lic should_work/PCOND1.lus}
@@ -806,7 +782,6 @@ PASS: ../utils/compare_exec_and_2c should_work/nc5.lus
 PASS: ./lus2lic {-o /tmp/call.lic should_work/call.lus}
 PASS: ./lus2lic {-ec -o /tmp/call.ec should_work/call.lus}
 PASS: ./myec2c {-o /tmp/call.c /tmp/call.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/call.lus
 PASS: ./lus2lic {-2c should_work/call.lus -n call}
 PASS: gcc call_call.c call_call_ext.c call_call_loop.c 
 PASS: ./lus2lic {-o /tmp/mouse1.lic should_work/mouse1.lus}
@@ -819,10 +794,10 @@ PASS: ../utils/compare_exec_and_2c should_work/mouse1.lus
 PASS: ./lus2lic {-o /tmp/lustre_test1_ok.lic should_work/lustre_test1_ok.lus}
 PASS: ./lus2lic {-ec -o /tmp/lustre_test1_ok.ec should_work/lustre_test1_ok.lus}
 PASS: ./myec2c {-o /tmp/lustre_test1_ok.c /tmp/lustre_test1_ok.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/lustre_test1_ok.lus
+PASS: ../utils/test_lus2lic_no_node should_work/lustre_test1_ok.lus
 PASS: ./lus2lic {-2c should_work/lustre_test1_ok.lus -n lustre_test1_ok}
 PASS: gcc lustre_test1_ok_lustre_test1_ok.c lustre_test1_ok_lustre_test1_ok_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
+PASS: ../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
 PASS: ./lus2lic {-o /tmp/compteur.lic should_work/compteur.lus}
 PASS: ./lus2lic {-ec -o /tmp/compteur.ec should_work/compteur.lus}
 PASS: ./myec2c {-o /tmp/compteur.c /tmp/compteur.ec}
@@ -833,10 +808,11 @@ PASS: ../utils/compare_exec_and_2c should_work/compteur.lus
 PASS: ./lus2lic {-o /tmp/Int.lic should_work/Int.lus}
 PASS: ./lus2lic {-ec -o /tmp/Int.ec should_work/Int.lus}
 PASS: ./myec2c {-o /tmp/Int.c /tmp/Int.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Int.lus
 PASS: ./lus2lic {-2c should_work/Int.lus -n Int}
 FAIL: without any option: ./lus2lic {-o /tmp/tranche.lic should_work/tranche.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/tranche.ec should_work/tranche.lus}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/tranche.lus -n tranche}
+FAIL: Check that the generated C code compiles  : gcc tranche_tranche.c tranche_tranche_loop.c 
 PASS: ./lus2lic {-o /tmp/t2.lic should_work/t2.lus}
 PASS: ./lus2lic {-ec -o /tmp/t2.ec should_work/t2.lus}
 PASS: ./myec2c {-o /tmp/t2.c /tmp/t2.ec}
@@ -847,7 +823,6 @@ PASS: ../utils/compare_exec_and_2c should_work/t2.lus
 PASS: ./lus2lic {-o /tmp/arbitre.lic should_work/arbitre.lus}
 PASS: ./lus2lic {-ec -o /tmp/arbitre.ec should_work/arbitre.lus}
 PASS: ./myec2c {-o /tmp/arbitre.c /tmp/arbitre.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/arbitre.lus
 PASS: ./lus2lic {-2c should_work/arbitre.lus -n arbitre}
 FAIL: Check that the generated C code compiles  : gcc arbitre_arbitre.c arbitre_arbitre_ext.c arbitre_arbitre_loop.c 
 PASS: ./lus2lic {-o /tmp/test_const.lic should_work/test_const.lus}
@@ -860,19 +835,20 @@ PASS: ../utils/compare_exec_and_2c should_work/test_const.lus
 PASS: ./lus2lic {-o /tmp/when_tuple.lic should_work/when_tuple.lus}
 PASS: ./lus2lic {-ec -o /tmp/when_tuple.ec should_work/when_tuple.lus}
 PASS: ./myec2c {-o /tmp/when_tuple.c /tmp/when_tuple.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/when_tuple.lus
 PASS: ./lus2lic {-2c should_work/when_tuple.lus -n when_tuple}
 FAIL: Check that the generated C code compiles  : gcc when_tuple_when_tuple.c when_tuple_when_tuple_ext.c when_tuple_when_tuple_loop.c 
 PASS: ./lus2lic {-o /tmp/carV2.lic should_work/carV2.lus}
 PASS: ./lus2lic {-ec -o /tmp/carV2.ec should_work/carV2.lus}
 PASS: ./myec2c {-o /tmp/carV2.c /tmp/carV2.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/carV2.lus
 PASS: ./lus2lic {-2c should_work/carV2.lus -n carV2}
 PASS: gcc carV2_carV2.c carV2_carV2_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/carV2.lus
 PASS: ./lus2lic {-o /tmp/test_merge.lic should_work/test_merge.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_merge.ec should_work/test_merge.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/test_merge.c /tmp/test_merge.ec}
+PASS: ./lus2lic {-2c should_work/test_merge.lus -n test_merge}
+PASS: gcc test_merge_test_merge.c test_merge_test_merge_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/test_merge.lus
 PASS: ./lus2lic {-o /tmp/FillFollowedByRed.lic should_work/FillFollowedByRed.lus}
 PASS: ./lus2lic {-ec -o /tmp/FillFollowedByRed.ec should_work/FillFollowedByRed.lus}
 PASS: ./myec2c {-o /tmp/FillFollowedByRed.c /tmp/FillFollowedByRed.ec}
@@ -880,17 +856,9 @@ PASS: ../utils/test_lus2lic_no_node should_work/FillFollowedByRed.lus
 PASS: ./lus2lic {-2c should_work/FillFollowedByRed.lus -n FillFollowedByRed}
 PASS: gcc FillFollowedByRed_FillFollowedByRed.c FillFollowedByRed_FillFollowedByRed_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/FillFollowedByRed.lus
-PASS: ./lus2lic {-o /tmp/sample_time_change.lic should_work/sample_time_change.lus}
-PASS: ./lus2lic {-ec -o /tmp/sample_time_change.ec should_work/sample_time_change.lus}
-PASS: ./myec2c {-o /tmp/sample_time_change.c /tmp/sample_time_change.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/sample_time_change.lus
-PASS: ./lus2lic {-2c should_work/sample_time_change.lus -n sample_time_change}
-PASS: gcc sample_time_change_sample_time_change.c sample_time_change_sample_time_change_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/sample_time_change.lus
 PASS: ./lus2lic {-o /tmp/test_enum.lic should_work/test_enum.lus}
 PASS: ./lus2lic {-ec -o /tmp/test_enum.ec should_work/test_enum.lus}
 PASS: ./myec2c {-o /tmp/test_enum.c /tmp/test_enum.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/test_enum.lus
 PASS: ./lus2lic {-2c should_work/test_enum.lus -n test_enum}
 PASS: gcc test_enum_test_enum.c test_enum_test_enum_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/test_enum.lus
@@ -911,7 +879,7 @@ PASS: ../utils/compare_exec_and_2c should_work/long_et_stupide_nom_de_noeud.lus
 PASS: ./lus2lic {-o /tmp/CURRENT.lic should_work/CURRENT.lus}
 PASS: ./lus2lic {-ec -o /tmp/CURRENT.ec should_work/CURRENT.lus}
 PASS: ./myec2c {-o /tmp/CURRENT.c /tmp/CURRENT.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/CURRENT.lus
+PASS: ../utils/test_lus2lic_no_node should_work/CURRENT.lus
 PASS: ./lus2lic {-2c should_work/CURRENT.lus -n CURRENT}
 PASS: gcc CURRENT_CURRENT.c CURRENT_CURRENT_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/CURRENT.lus
@@ -930,13 +898,11 @@ PASS: gcc ts04_ts04.c ts04_ts04_loop.c
 PASS: ../utils/compare_exec_and_2c should_work/ts04.lus
 FAIL: without any option: ./lus2lic {-o /tmp/bug_map_fby.lic should_work/bug_map_fby.lus}
 FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/bug_map_fby.ec should_work/bug_map_fby.lus}
-PASS: ./lus2lic {-o /tmp/multiclock.lic should_work/multiclock.lus}
-PASS: ./lus2lic {-ec -o /tmp/multiclock.ec should_work/multiclock.lus}
-PASS: ./myec2c {-o /tmp/multiclock.c /tmp/multiclock.ec}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/bug_map_fby.lus -n bug_map_fby}
+FAIL: without any option: ./lus2lic {-o /tmp/multiclock.lic should_work/multiclock.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/multiclock.ec should_work/multiclock.lus}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/multiclock.lus
-PASS: ./lus2lic {-2c should_work/multiclock.lus -n multiclock}
-PASS: gcc multiclock_multiclock.c multiclock_multiclock_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/multiclock.lus
+FAIL: Generate c code  : ./lus2lic {-2c should_work/multiclock.lus -n multiclock}
 PASS: ./lus2lic {-o /tmp/nc2.lic should_work/nc2.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc2.ec should_work/nc2.lus}
 PASS: ./myec2c {-o /tmp/nc2.c /tmp/nc2.ec}
@@ -981,7 +947,6 @@ PASS: ../utils/compare_exec_and_2c should_work/o2l_feux_compl.lus
 PASS: ./lus2lic {-o /tmp/model.lic should_work/model.lus}
 PASS: ./lus2lic {-ec -o /tmp/model.ec should_work/model.lus}
 PASS: ./myec2c {-o /tmp/model.c /tmp/model.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/model.lus
 PASS: ./lus2lic {-2c should_work/model.lus -n model}
 PASS: ./lus2lic {-o /tmp/matrice.lic should_work/matrice.lus}
 PASS: ./lus2lic {-ec -o /tmp/matrice.ec should_work/matrice.lus}
@@ -1054,23 +1019,26 @@ FAIL: Generate c code  : ./lus2lic {-2c should_work/activation2.lus -n activatio
 PASS: ./lus2lic {-o /tmp/type_decl.lic should_work/type_decl.lus}
 PASS: ./lus2lic {-ec -o /tmp/type_decl.ec should_work/type_decl.lus}
 PASS: ./myec2c {-o /tmp/type_decl.c /tmp/type_decl.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/type_decl.lus
 PASS: ./lus2lic {-2c should_work/type_decl.lus -n type_decl}
 PASS: gcc type_decl_type_decl.c type_decl_type_decl_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/type_decl.lus
+PASS: ./lus2lic {-o /tmp/sample_time_change_MainNode.lic should_work/sample_time_change_MainNode.lus}
+PASS: ./lus2lic {-ec -o /tmp/sample_time_change_MainNode.ec should_work/sample_time_change_MainNode.lus}
+PASS: ./myec2c {-o /tmp/sample_time_change_MainNode.c /tmp/sample_time_change_MainNode.ec}
+PASS: ../utils/test_lus2lic_no_node should_work/sample_time_change_MainNode.lus
+PASS: ./lus2lic {-2c should_work/sample_time_change_MainNode.lus -n sample_time_change_MainNode}
+PASS: gcc sample_time_change_MainNode_sample_time_change_MainNode.c sample_time_change_MainNode_sample_time_change_MainNode_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/sample_time_change_MainNode.lus
 PASS: ./lus2lic {-o /tmp/import1.lic should_work/import1.lus}
 PASS: ./lus2lic {-ec -o /tmp/import1.ec should_work/import1.lus}
 PASS: ./myec2c {-o /tmp/import1.c /tmp/import1.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/import1.lus
 PASS: ./lus2lic {-2c should_work/import1.lus -n import1}
 FAIL: Check that the generated C code compiles  : gcc import1_import1.c import1_import1_ext.c import1_import1_loop.c 
 PASS: ./lus2lic {-o /tmp/pack1.lic should_work/pack1.lus}
 PASS: ./lus2lic {-ec -o /tmp/pack1.ec should_work/pack1.lus}
 PASS: ./myec2c {-o /tmp/pack1.c /tmp/pack1.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/pack1.lus
 PASS: ./lus2lic {-2c should_work/pack1.lus -n pack1}
 PASS: gcc pack1_pack1.c pack1_pack1_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/pack1.lus
 PASS: ./lus2lic {-o /tmp/bob.lic should_work/bob.lus}
 PASS: ./lus2lic {-ec -o /tmp/bob.ec should_work/bob.lus}
 PASS: ./myec2c {-o /tmp/bob.c /tmp/bob.ec}
@@ -1143,27 +1111,30 @@ PASS: ../utils/compare_exec_and_2c should_work/mouse3.lus
 PASS: ./lus2lic {-o /tmp/array_concat.lic should_work/array_concat.lus}
 PASS: ./lus2lic {-ec -o /tmp/array_concat.ec should_work/array_concat.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/array_concat.c /tmp/array_concat.ec}
+PASS: ./lus2lic {-2c should_work/array_concat.lus -n array_concat}
+PASS: gcc array_concat_array_concat.c array_concat_array_concat_loop.c 
+FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/array_concat.lus
 PASS: ./lus2lic {-o /tmp/ex.lic should_work/ex.lus}
 PASS: ./lus2lic {-ec -o /tmp/ex.ec should_work/ex.lus}
 PASS: ./myec2c {-o /tmp/ex.c /tmp/ex.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/ex.lus
 PASS: ./lus2lic {-2c should_work/ex.lus -n ex}
 PASS: gcc ex_ex.c ex_ex_loop.c 
-PASS: ../utils/compare_exec_and_2c should_work/ex.lus
+UNRESOLVED: Time out: ../utils/compare_exec_and_2c should_work/ex.lus
 PASS: ./lus2lic {-o /tmp/xxx.lic should_work/xxx.lus}
 PASS: ./lus2lic {-ec -o /tmp/xxx.ec should_work/xxx.lus}
 PASS: ./myec2c {-o /tmp/xxx.c /tmp/xxx.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/xxx.lus
 PASS: ./lus2lic {-2c should_work/xxx.lus -n xxx}
 PASS: gcc xxx_xxx.c xxx_xxx_loop.c 
-PASS: ../utils/compare_exec_and_2c should_work/xxx.lus
+UNRESOLVED: Time out: ../utils/compare_exec_and_2c should_work/xxx.lus
 PASS: ./lus2lic {-o /tmp/moyenne.lic should_work/moyenne.lus}
 PASS: ./lus2lic {-ec -o /tmp/moyenne.ec should_work/moyenne.lus}
 PASS: ./myec2c {-o /tmp/moyenne.c /tmp/moyenne.ec}
 PASS: ../utils/test_lus2lic_no_node should_work/moyenne.lus
 PASS: ./lus2lic {-2c should_work/moyenne.lus -n moyenne}
 PASS: gcc moyenne_moyenne.c moyenne_moyenne_loop.c 
-PASS: ../utils/compare_exec_and_2c should_work/moyenne.lus
+UNRESOLVED: Time out: ../utils/compare_exec_and_2c should_work/moyenne.lus
 PASS: ./lus2lic {-o /tmp/activation1.lic should_work/activation1.lus}
 PASS: ./lus2lic {-ec -o /tmp/activation1.ec should_work/activation1.lus}
 PASS: ./myec2c {-o /tmp/activation1.c /tmp/activation1.ec}
@@ -1172,7 +1143,6 @@ FAIL: Generate c code  : ./lus2lic {-2c should_work/activation1.lus -n activatio
 PASS: ./lus2lic {-o /tmp/call01.lic should_work/call01.lus}
 PASS: ./lus2lic {-ec -o /tmp/call01.ec should_work/call01.lus}
 PASS: ./myec2c {-o /tmp/call01.c /tmp/call01.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/call01.lus
 PASS: ./lus2lic {-2c should_work/call01.lus -n call01}
 PASS: gcc call01_call01.c call01_call01_loop.c 
 PASS: ./lus2lic {-o /tmp/bug.lic should_work/bug.lus}
@@ -1185,21 +1155,19 @@ PASS: ../utils/compare_exec_and_2c should_work/bug.lus
 PASS: ./lus2lic {-o /tmp/ck4.lic should_work/ck4.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck4.ec should_work/ck4.lus}
 PASS: ./myec2c {-o /tmp/ck4.c /tmp/ck4.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck4.lus
+PASS: ../utils/test_lus2lic_no_node should_work/ck4.lus
 PASS: ./lus2lic {-2c should_work/ck4.lus -n ck4}
 PASS: gcc ck4_ck4.c ck4_ck4_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck4.lus
 PASS: ./lus2lic {-o /tmp/map_red_iter.lic should_work/map_red_iter.lus}
 PASS: ./lus2lic {-ec -o /tmp/map_red_iter.ec should_work/map_red_iter.lus}
 PASS: ./myec2c {-o /tmp/map_red_iter.c /tmp/map_red_iter.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/map_red_iter.lus
 PASS: ./lus2lic {-2c should_work/map_red_iter.lus -n map_red_iter}
 PASS: gcc map_red_iter_map_red_iter.c map_red_iter_map_red_iter_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/map_red_iter.lus
 PASS: ./lus2lic {-o /tmp/p.lic should_work/p.lus}
 PASS: ./lus2lic {-ec -o /tmp/p.ec should_work/p.lus}
 PASS: ./myec2c {-o /tmp/p.c /tmp/p.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/p.lus
 PASS: ./lus2lic {-2c should_work/p.lus -n p}
 PASS: ./lus2lic {-o /tmp/struct0.lic should_work/struct0.lus}
 PASS: ./lus2lic {-ec -o /tmp/struct0.ec should_work/struct0.lus}
@@ -1211,7 +1179,7 @@ PASS: ../utils/compare_exec_and_2c should_work/struct0.lus
 PASS: ./lus2lic {-o /tmp/filliter.lic should_work/filliter.lus}
 PASS: ./lus2lic {-ec -o /tmp/filliter.ec should_work/filliter.lus}
 PASS: ./myec2c {-o /tmp/filliter.c /tmp/filliter.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/filliter.lus
+PASS: ../utils/test_lus2lic_no_node should_work/filliter.lus
 PASS: ./lus2lic {-2c should_work/filliter.lus -n filliter}
 PASS: gcc filliter_filliter.c filliter_filliter_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/filliter.lus
@@ -1253,7 +1221,6 @@ PASS: ../utils/compare_exec_and_2c should_work/followed_by.lus
 PASS: ./lus2lic {-o /tmp/asservi.lic should_work/asservi.lus}
 PASS: ./lus2lic {-ec -o /tmp/asservi.ec should_work/asservi.lus}
 PASS: ./myec2c {-o /tmp/asservi.c /tmp/asservi.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/asservi.lus
 FAIL: Generate c code  : ./lus2lic {-2c should_work/asservi.lus -n asservi}
 PASS: ./lus2lic {-o /tmp/rediter.lic should_work/rediter.lus}
 PASS: ./lus2lic {-ec -o /tmp/rediter.ec should_work/rediter.lus}
@@ -1272,7 +1239,6 @@ PASS: ../utils/compare_exec_and_2c should_work/mapdeRed.lus
 PASS: ./lus2lic {-o /tmp/modelInst.lic should_work/modelInst.lus}
 PASS: ./lus2lic {-ec -o /tmp/modelInst.ec should_work/modelInst.lus}
 PASS: ./myec2c {-o /tmp/modelInst.c /tmp/modelInst.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/modelInst.lus
 PASS: ./lus2lic {-2c should_work/modelInst.lus -n modelInst}
 PASS: ./lus2lic {-o /tmp/dependeur_struct.lic should_work/dependeur_struct.lus}
 PASS: ./lus2lic {-ec -o /tmp/dependeur_struct.ec should_work/dependeur_struct.lus}
@@ -1298,6 +1264,8 @@ PASS: ../utils/compare_exec_and_2c should_work/test_struct.lus
 PASS: ./lus2lic {-o /tmp/modes3x2_v4.lic should_work/modes3x2_v4.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2_v4.ec should_work/modes3x2_v4.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2_v4.c /tmp/modes3x2_v4.ec}
+PASS: ./lus2lic {-2c should_work/modes3x2_v4.lus -n modes3x2_v4}
+PASS: gcc modes3x2_v4_modes3x2_v4.c modes3x2_v4_modes3x2_v4_ext.c modes3x2_v4_modes3x2_v4_loop.c 
 PASS: ./lus2lic {-o /tmp/uu.lic should_work/uu.lus}
 PASS: ./lus2lic {-ec -o /tmp/uu.ec should_work/uu.lus}
 PASS: ./myec2c {-o /tmp/uu.c /tmp/uu.ec}
@@ -1315,6 +1283,9 @@ PASS: ../utils/compare_exec_and_2c should_work/simpleRed.lus
 PASS: ./lus2lic {-o /tmp/modes3x2_v3.lic should_work/modes3x2_v3.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2_v3.ec should_work/modes3x2_v3.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2_v3.c /tmp/modes3x2_v3.ec}
+PASS: ./lus2lic {-2c should_work/modes3x2_v3.lus -n modes3x2_v3}
+PASS: gcc modes3x2_v3_modes3x2_v3.c modes3x2_v3_modes3x2_v3_loop.c 
+PASS: ../utils/compare_exec_and_2c should_work/modes3x2_v3.lus
 PASS: ./lus2lic {-o /tmp/pre_x.lic should_work/pre_x.lus}
 PASS: ./lus2lic {-ec -o /tmp/pre_x.ec should_work/pre_x.lus}
 PASS: ./myec2c {-o /tmp/pre_x.c /tmp/pre_x.ec}
@@ -1360,12 +1331,10 @@ FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_
 PASS: ./lus2lic {-o /tmp/lustre.lic should_work/lustre.lus}
 PASS: ./lus2lic {-ec -o /tmp/lustre.ec should_work/lustre.lus}
 PASS: ./myec2c {-o /tmp/lustre.c /tmp/lustre.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/lustre.lus
 PASS: ./lus2lic {-2c should_work/lustre.lus -n lustre}
 PASS: ./lus2lic {-o /tmp/packed_cst.lic should_work/packed_cst.lus}
 PASS: ./lus2lic {-ec -o /tmp/packed_cst.ec should_work/packed_cst.lus}
 PASS: ./myec2c {-o /tmp/packed_cst.c /tmp/packed_cst.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/packed_cst.lus
 PASS: ./lus2lic {-2c should_work/packed_cst.lus -n packed_cst}
 PASS: ./lus2lic {-o /tmp/predef02.lic should_work/predef02.lus}
 PASS: ./lus2lic {-ec -o /tmp/predef02.ec should_work/predef02.lus}
@@ -1391,7 +1360,7 @@ PASS: ../utils/compare_exec_and_2c should_work/minmax6.lus
 PASS: ./lus2lic {-o /tmp/ck3.lic should_work/ck3.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck3.ec should_work/ck3.lus}
 PASS: ./myec2c {-o /tmp/ck3.c /tmp/ck3.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck3.lus
+PASS: ../utils/test_lus2lic_no_node should_work/ck3.lus
 PASS: ./lus2lic {-2c should_work/ck3.lus -n ck3}
 PASS: gcc ck3_ck3.c ck3_ck3_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck3.lus
@@ -1433,10 +1402,10 @@ PASS: ../utils/compare_exec_and_2c should_work/call02.lus
 PASS: ./lus2lic {-o /tmp/ck7.lic should_work/ck7.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck7.ec should_work/ck7.lus}
 PASS: ./myec2c {-o /tmp/ck7.c /tmp/ck7.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck7.lus
+PASS: ../utils/test_lus2lic_no_node should_work/ck7.lus
 PASS: ./lus2lic {-2c should_work/ck7.lus -n ck7}
 PASS: gcc ck7_ck7.c ck7_ck7_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck7.lus
+PASS: ../utils/compare_exec_and_2c should_work/ck7.lus
 PASS: ./lus2lic {-o /tmp/nc10.lic should_work/nc10.lus}
 PASS: ./lus2lic {-ec -o /tmp/nc10.ec should_work/nc10.lus}
 PASS: ./myec2c {-o /tmp/nc10.c /tmp/nc10.ec}
@@ -1517,13 +1486,10 @@ PASS: ../utils/test_lus2lic_no_node should_work/iterate.lus
 PASS: ./lus2lic {-2c should_work/iterate.lus -n iterate}
 PASS: gcc iterate_iterate.c iterate_iterate_loop.c 
 PASS: ../utils/compare_exec_and_2c should_work/iterate.lus
-PASS: ./lus2lic {-o /tmp/PCOND.lic should_work/PCOND.lus}
-PASS: ./lus2lic {-ec -o /tmp/PCOND.ec should_work/PCOND.lus}
-PASS: ./myec2c {-o /tmp/PCOND.c /tmp/PCOND.ec}
+FAIL: without any option: ./lus2lic {-o /tmp/PCOND.lic should_work/PCOND.lus}
+FAIL: Generate ec code  : ./lus2lic {-ec -o /tmp/PCOND.ec should_work/PCOND.lus}
 FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/PCOND.lus
-PASS: ./lus2lic {-2c should_work/PCOND.lus -n PCOND}
-PASS: gcc PCOND_PCOND.c PCOND_PCOND_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/PCOND.lus
+FAIL: Generate c code  : ./lus2lic {-2c should_work/PCOND.lus -n PCOND}
 PASS: ./lus2lic {-o /tmp/EDGE.lic should_work/EDGE.lus}
 PASS: ./lus2lic {-ec -o /tmp/EDGE.ec should_work/EDGE.lus}
 PASS: ./myec2c {-o /tmp/EDGE.c /tmp/EDGE.ec}
@@ -1534,12 +1500,12 @@ PASS: ../utils/compare_exec_and_2c should_work/EDGE.lus
 PASS: ./lus2lic {-o /tmp/call03.lic should_work/call03.lus}
 PASS: ./lus2lic {-ec -o /tmp/call03.ec should_work/call03.lus}
 PASS: ./myec2c {-o /tmp/call03.c /tmp/call03.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/call03.lus
 PASS: ./lus2lic {-2c should_work/call03.lus -n call03}
 PASS: gcc call03_call03.c call03_call03_loop.c 
 PASS: ./lus2lic {-o /tmp/modes3x2-simu.lic should_work/modes3x2-simu.lus}
 PASS: ./lus2lic {-ec -o /tmp/modes3x2-simu.ec should_work/modes3x2-simu.lus}
 FAIL: Try ec2c on the result: ./myec2c {-o /tmp/modes3x2-simu.c /tmp/modes3x2-simu.ec}
+FAIL: Generate c code  : ./lus2lic {-2c should_work/modes3x2-simu.lus -n modes3x2-simu}
 PASS: ./lus2lic {-o /tmp/count.lic should_work/count.lus}
 PASS: ./lus2lic {-ec -o /tmp/count.ec should_work/count.lus}
 PASS: ./myec2c {-o /tmp/count.c /tmp/count.ec}
@@ -1550,21 +1516,20 @@ PASS: ../utils/compare_exec_and_2c should_work/count.lus
 PASS: ./lus2lic {-o /tmp/ck2.lic should_work/ck2.lus}
 PASS: ./lus2lic {-ec -o /tmp/ck2.ec should_work/ck2.lus}
 PASS: ./myec2c {-o /tmp/ck2.c /tmp/ck2.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/ck2.lus
+PASS: ../utils/test_lus2lic_no_node should_work/ck2.lus
 PASS: ./lus2lic {-2c should_work/ck2.lus -n ck2}
 PASS: gcc ck2_ck2.c ck2_ck2_loop.c 
 FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/ck2.lus
 PASS: ./lus2lic {-o /tmp/X.lic should_work/X.lus}
 PASS: ./lus2lic {-ec -o /tmp/X.ec should_work/X.lus}
 PASS: ./myec2c {-o /tmp/X.c /tmp/X.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/X.lus
+PASS: ../utils/test_lus2lic_no_node should_work/X.lus
 PASS: ./lus2lic {-2c should_work/X.lus -n X}
 PASS: gcc X_X.c X_X_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/X.lus
+PASS: ../utils/compare_exec_and_2c should_work/X.lus
 PASS: ./lus2lic {-o /tmp/Condact.lic should_work/Condact.lus}
 PASS: ./lus2lic {-ec -o /tmp/Condact.ec should_work/Condact.lus}
 PASS: ./myec2c {-o /tmp/Condact.c /tmp/Condact.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/Condact.lus
 PASS: ./lus2lic {-2c should_work/Condact.lus -n Condact}
 PASS: ./lus2lic {-o /tmp/poussoir.lic should_work/poussoir.lus}
 PASS: ./lus2lic {-ec -o /tmp/poussoir.ec should_work/poussoir.lus}
@@ -1583,14 +1548,13 @@ PASS: ../utils/compare_exec_and_2c should_work/SWITCH1.lus
 PASS: ./lus2lic {-o /tmp/clock1_2ms.lic should_work/clock1_2ms.lus}
 PASS: ./lus2lic {-ec -o /tmp/clock1_2ms.ec should_work/clock1_2ms.lus}
 PASS: ./myec2c {-o /tmp/clock1_2ms.c /tmp/clock1_2ms.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/clock1_2ms.lus
+PASS: ../utils/test_lus2lic_no_node should_work/clock1_2ms.lus
 PASS: ./lus2lic {-2c should_work/clock1_2ms.lus -n clock1_2ms}
 PASS: gcc clock1_2ms_clock1_2ms.c clock1_2ms_clock1_2ms_loop.c 
-FAIL: Try to compare lus2lic -exec and -2c: ../utils/compare_exec_and_2c should_work/clock1_2ms.lus
+PASS: ../utils/compare_exec_and_2c should_work/clock1_2ms.lus
 PASS: ./lus2lic {-o /tmp/decl.lic should_work/decl.lus}
 PASS: ./lus2lic {-ec -o /tmp/decl.ec should_work/decl.lus}
 PASS: ./myec2c {-o /tmp/decl.c /tmp/decl.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/decl.lus
 PASS: ./lus2lic {-2c should_work/decl.lus -n decl}
 FAIL: Check that the generated C code compiles  : gcc decl_decl.c decl_decl_ext.c decl_decl_loop.c 
 PASS: ./lus2lic {-o /tmp/bred_lv4.lic should_work/bred_lv4.lus}
@@ -1617,13 +1581,11 @@ PASS: ../utils/compare_exec_and_2c should_work/param_node.lus
 PASS: ./lus2lic {-o /tmp/simple.lic should_work/simple.lus}
 PASS: ./lus2lic {-ec -o /tmp/simple.ec should_work/simple.lus}
 PASS: ./myec2c {-o /tmp/simple.c /tmp/simple.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/simple.lus
 PASS: ./lus2lic {-2c should_work/simple.lus -n simple}
 FAIL: Check that the generated C code compiles  : gcc simple_simple.c simple_simple_loop.c 
 PASS: ./lus2lic {-o /tmp/func_with_body.lic should_work/func_with_body.lus}
 PASS: ./lus2lic {-ec -o /tmp/func_with_body.ec should_work/func_with_body.lus}
 PASS: ./myec2c {-o /tmp/func_with_body.c /tmp/func_with_body.ec}
-PASS: ../utils/test_lus2lic_no_node should_work/func_with_body.lus
 PASS: ./lus2lic {-2c should_work/func_with_body.lus -n func_with_body}
 PASS: gcc func_with_body_func_with_body.c func_with_body_func_with_body_loop.c 
 PASS: ./lus2lic {-o /tmp/minus.lic should_work/minus.lus}
@@ -1636,7 +1598,6 @@ PASS: ../utils/compare_exec_and_2c should_work/minus.lus
 PASS: ./lus2lic {-o /tmp/remplissage-1.0.lic should_work/remplissage-1.0.lus}
 PASS: ./lus2lic {-ec -o /tmp/remplissage-1.0.ec should_work/remplissage-1.0.lus}
 PASS: ./myec2c {-o /tmp/remplissage-1.0.c /tmp/remplissage-1.0.ec}
-FAIL: Try to compare lus2lic -exec and ecexe: ../utils/test_lus2lic_no_node should_work/remplissage-1.0.lus
 PASS: ./lus2lic {-2c should_work/remplissage-1.0.lus -n remplissage-1.0}
 XFAIL: Test bad programs (syntax): test_lus2lic_no_node should_fail/syntax/old_style_and_pack.lus
 XFAIL: Test bad programs (syntax): test_lus2lic_no_node should_fail/syntax/record.lus
@@ -1708,7 +1669,10 @@ XPASS: Test bad programs (semantics): lus2lic {-o /tmp/bug.lic should_fail/seman
 
 		=== lus2lic Summary ===
 
-# of expected passes		1508
-# of unexpected failures	130
+# of expected passes		1512
+# of unexpected failures	84
 # of unexpected successes	21
 # of expected failures		37
+# of unresolved testcases	3
+testcase ./lus2lic.tests/non-reg.exp completed in 259 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/lus2lic.tests/non-reg.exp b/test/lus2lic.tests/non-reg.exp
index 7418a0bdda129da51062c837cd5d336f0c10b8bf..f8803db808f6fe8d33303c0a757ce8ab0223a145 100644
--- a/test/lus2lic.tests/non-reg.exp
+++ b/test/lus2lic.tests/non-reg.exp
@@ -14,25 +14,27 @@ foreach f $ok_files {
 
     set id1 [should_work "without any option" "$lus2lic" "-o $bf.lic $f"]
     wait -i $id1
-    set id2 [should_work "Generate ec code  " "$lus2lic" "-ec -o $bf.ec $f"]
-    wait -i $id2
-
-    if { [nonemptyfile "$bf.ec"] } {
-        set id3 [should_work "Try ec2c on the result" "$ec2c" "-o $bf.c $bf.ec"]
-        wait -i $id3
-        catch { exp_close -i $id3 }
+    # if { [nonemptyfile "$bf.lic"] } {
+        set id2 [should_work "Generate ec code  " "$lus2lic" "-ec -o $bf.ec $f"]
+        wait -i $id2
+        
+        if { [nonemptyfile "$bf.ec"] } {
+            set id3 [should_work "Try ec2c on the result" "$ec2c" "-o $bf.c $bf.ec"]
+            wait -i $id3
+            catch { exp_close -i $id3 }
         catch { exp_wait  -i $id3 } output
-    }
-    if { [nonemptyfile "$bf.c"] } {
-        set id4 [should_work "Try to compare lus2lic -exec and ecexe" "$test_lus2lic_no_node" "$f"]
-        catch { exp_close -i $id4 }
-        catch { exp_wait  -i $id4 } output
-
+        }
+        
+        if { [nonemptyfile "$bf.c"] && [do_ecexe_vs_exec "$f"] } {
+            set id4 [should_work "Try to compare lus2lic -exec and ecexe" "$test_lus2lic_no_node" "$f"]
+            catch { exp_close -i $id4 }
+            catch { exp_wait  -i $id4 } output
+        }
         set id5 [should_work "Generate c code  " "$lus2lic" "-2c $f -n $basef"]
         wait -i $id5
-
+        
         if { [nonemptyfile "${basef}_${basef}.c"] } {
-            eval spawn "rm -f a.out"
+        eval spawn "rm -f a.out"
             if { [nonemptyfile "${basef}_${basef}_ext.c"] } {
                 set id6 [should_work "Check that the generated C code compiles  " "gcc ${basef}_${basef}.c ${basef}_${basef}_ext.c ${basef}_${basef}_loop.c"]
             } else {
@@ -41,24 +43,21 @@ foreach f $ok_files {
             wait -i $id6
             catch { exp_close -i $id6 }
             catch { exp_wait  -i $id6 } output
-         
-            # do_test is used to avoid to perforn a comparison on files that contains extern nodes
-            if { [nonemptyfile a.out] && [contains_extern "$f"] } {
+            
+            if { [nonemptyfile a.out] && [do_2c_vs_exec "$f"] } {
                 set id7 [should_work "Try to compare lus2lic -exec and -2c" "$compare_exec_and_2c" "$f"]
                 catch { exp_close -i $id7 }
                 catch { exp_wait  -i $id7 } output                   
-                }
+            }
         }
         catch { exp_close -i $id5 }
         catch { exp_wait  -i $id5 } output
-    }
-
+        catch { exp_close -i $id2 }
+        catch { exp_wait  -i $id2 } output
+    #}
     catch { exp_close -i $id1 }
     catch { exp_wait  -i $id1 } output
-    catch { exp_close -i $id2 }
-    catch { exp_wait  -i $id2 } output
-
- }
+}
 
 
 # Programs that should fail
diff --git a/test/lus2lic.time b/test/lus2lic.time
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3d42a2c82dce505edf7474fa41d9c8a12e9419d0 100644
--- a/test/lus2lic.time
+++ b/test/lus2lic.time
@@ -0,0 +1,2 @@
+testcase ./lus2lic.tests/non-reg.exp completed in 259 seconds
+testcase ./lus2lic.tests/progression.exp completed in 0 seconds
diff --git a/test/should_work/CURRENT.lus b/test/should_work/CURRENT.lus
index 462150c81c0928b307a692385bf7773c413fd0d1..94856251a9e47908a7a76b11dbb904a04be3a710 100644
--- a/test/should_work/CURRENT.lus
+++ b/test/should_work/CURRENT.lus
@@ -1,4 +1,9 @@
-node CURRENT(x: bool; y: bool when x)
+node CURRENT(x: bool; y: bool)
+returns (z: bool);
+let
+  z = current(CURRENT_clk(x,y when x));
+tel
+node CURRENT_clk(x: bool; y: bool when x)
 returns (z: bool when x);
 let
   z = y;
diff --git a/test/should_work/PCOND.lus b/test/should_work/PCOND.lus
index ff9f4b8262feac114f596ce0115f38a429b11242..21211251dedb4f75b75077724c08e335fbceb97a 100644
--- a/test/should_work/PCOND.lus
+++ b/test/should_work/PCOND.lus
@@ -1,4 +1,29 @@
 node PCOND( 
+           h0:bool; 
+           hA,hB,hC:bool;
+           A:int ; 
+           B:int ; 
+           C:bool;
+           hD:bool; 
+           D:bool )
+returns (hX:bool; X:int);
+var
+  hX_on_h0 : bool when h0;
+  X_on_hX : int when hX_on_h0; 
+let
+  hX = current(hX_on_h0);
+  X = current(X_on_hX);
+  hX_on_h0, X_on_hX = PCOND_clk( 
+           h0,
+           hA,hB,hC when h0,
+           A when hA,
+           B when hB, 
+           C when hC,
+           hD when hC, 
+           D when hD);
+tel
+
+node PCOND_clk( 
            h0:bool; 
            hA,hB,hC:bool when h0;
            A:int when hA; 
@@ -8,14 +33,14 @@ node PCOND(
            D:bool when hD)
 returns (hX:bool when h0; X:int when hX);
 let
-        hX = hC and current(hD) and ( ( hA and
-                                       current(current(D)) ) 
-                                     or 
-                                     ( hB and not
-                                      current(current(D)) ) );
+  hX = hC and current(hD) and ( ( hA and
+                                 current(current(D)) ) 
+                               or 
+                               ( hB and not
+                                current(current(D)) ) );
 
-        X = ( if ( hA and current(current(D)) )
-              then current(A) 
-              else current(B) 
-             ) when hX;
+  X = ( if ( hA and current(current(D)) )
+        then current(A) 
+        else current(B) 
+       ) when hX;
 tel
diff --git a/test/should_work/PCOND1.lus b/test/should_work/PCOND1.lus
index 7c116c255df2df06767354043d8c96d842d4421f..a7509c5c727d30a65a66aa6c867b45135a0f02a8 100644
--- a/test/should_work/PCOND1.lus
+++ b/test/should_work/PCOND1.lus
@@ -1,7 +1,29 @@
-node PCOND1( h0:bool; hA,hB,hC:bool when h0;
-A:int when hA; B:int when hB; C:bool when hC;
+node PCOND1(h0:bool; hA,hB,hC:bool ;
+            A:int ; B:int ; C:bool;
+            hD:bool; D:bool)
+returns (hX:bool);
+var
+  hX_on_h0: bool when h0;
+  hA_on_h0: bool when h0;
+  hB_on_h0: bool when h0;
+  hC_on_h0: bool when h0; 
+  hD_on_hC_on_h0: bool when hC_on_h0; 
+let
+  hX = current(hX_on_h0);
+  hA_on_h0 = hA when h0;
+  hB_on_h0 = hB when h0;
+  hC_on_h0 = hC when h0;
+  hD_on_hC_on_h0 = hD when hC_on_h0;
+  hX_on_h0 = PCOND1_clk(h0,hA when h0,hB when h0,
+                        hC when h0,A when hA_on_h0,B when hB_on_h0,C when hC_on_h0,
+                        hD when hC_on_h0,D  when hD_on_hC_on_h0);
+tel
+
+
+node PCOND1_clk(h0:bool; hA,hB,hC:bool when h0;
+                A:int when hA; B:int when hB; C:bool when hC;
                 hD:bool when hC; D:bool when hD)
 returns (hX:bool when h0);
 let
-        hX = hC and current(hD) and h0 when h0;
+  hX = hC and current(hD) and h0 when h0;
 tel
diff --git a/test/should_work/X.lus b/test/should_work/X.lus
index 948a2650129ab95d26ff75a48b6fc9fbe005f3b9..8a8246987d4d9c2eb9548c4445496e7878f90b77 100644
--- a/test/should_work/X.lus
+++ b/test/should_work/X.lus
@@ -1,4 +1,16 @@
-node X (c: bool; n:int when c)
+node X (c: bool; n:int)
+returns (d: bool; m: int; p:int);
+var
+  m_on_c :int when c; 
+  p_on_d:int when d;
+
+let
+  d,m_on_c,p_on_d = X_clk(c, n when c);
+  m = current (m_on_c);
+  p = current (p_on_d);
+tel
+
+node X_clk (c: bool; n:int when c)
 returns (d: bool; m: int when c; p:int when d);
 let
   m = 0 when c -> pre(m) + n;
diff --git a/test/should_work/X6.lus b/test/should_work/X6.lus
index aaadd23878aa56e0a7ef363a9963b87aab996b23..d6a86c152bccf361168208a3431423ff3cd6827f 100644
--- a/test/should_work/X6.lus
+++ b/test/should_work/X6.lus
@@ -1,5 +1,28 @@
 
 node X6(n:int; b: bool)
+returns 
+	(m: int;
+	 c: bool;
+    d: bool;
+	p,u : int;
+	q,r: int);
+var
+ 	 c': bool when b;
+    d': bool when c;
+	p',u' : int when b;
+	q',r': int when c ;
+let
+  m,c',d',p',u',q',r'= X6_clk(n,b);
+  c = current(c');
+  d = current(d');
+  p = current(p');
+  u = current(u');
+  q = current(q');
+  r = current(r');
+tel
+  
+
+node X6_clk(n:int; b: bool)
 returns 
 	(m: int;
 	 c: bool when b;
diff --git a/test/should_work/bob.lus b/test/should_work/bob.lus
index 4aa724d28ee43f3b130b07be62bd63e35c5da028..a3a4e8aca2ac3fd65c73976b925b3c79f79ff2b8 100644
--- a/test/should_work/bob.lus
+++ b/test/should_work/bob.lus
@@ -1,4 +1,8 @@
-node bob(i : bool ) returns (o : bool when i);
+node bob(i : bool ) returns (o : bool);
+let
+	o = current(bob_clk(i));
+tel
+node bob_clk(i : bool ) returns (o : bool when i);
 let
 	o = (true -> pre(false -> pre(i))) when i;
 	assert (true -> i <> pre(i)) ;
diff --git a/test/should_work/ck2.lus b/test/should_work/ck2.lus
index 7563fa1b290e448f6c77f640e459782e3c4e772e..9d04932c02169e4dda9c23a20fb389df086db653 100644
--- a/test/should_work/ck2.lus
+++ b/test/should_work/ck2.lus
@@ -1,5 +1,16 @@
 
-node ck2 (c: bool; d: bool when c ; e: int when d)
+node ck2 (c: bool; d: bool ; e: int)
+returns (n: int);  
+var
+  d_on_c : bool when c;
+
+let
+  d_on_c = d when c;
+  n = ck2_clk(c,  d_on_c , e when d_on_c);
+tel
+
+
+node ck2_clk (c: bool; d: bool when c ; e: int when d)
 returns (n: int);
 let
   n = if c and current(d) then 0 else current(current(e));
diff --git a/test/should_work/ck3.lus b/test/should_work/ck3.lus
index eb95d0e57709f19d3b198c5e81717076dace4c08..34dc16ca51f6f6c5c989c91980a4f8e2c5c88610 100644
--- a/test/should_work/ck3.lus
+++ b/test/should_work/ck3.lus
@@ -1,4 +1,14 @@
-node ck3 (a: bool; b: bool when a; c: bool when b)
+node ck3 (a: bool; b: bool; c: bool)
+returns (x: bool);
+var
+  b_on_a : bool when a;
+let
+  b_on_a = b when a;
+  x = ck3_clk(a,b when a, c when b_on_a); 
+tel
+
+
+node ck3_clk (a: bool; b: bool when a; c: bool when b)
 returns (x: bool);
 let
   x = current(current(c));
diff --git a/test/should_work/ck4.lus b/test/should_work/ck4.lus
index 70d7f2ac4ec6264f68994844fb877954a72e7fb1..5e58459aa2e9b9d6b11b2f0e3735f8486b8c952c 100644
--- a/test/should_work/ck4.lus
+++ b/test/should_work/ck4.lus
@@ -1,4 +1,9 @@
-node ck4 (a: int when b; b: bool)
+node ck4 (a: int; b: bool)
+returns (c: int);
+let
+  c = ck4_clk(a when b, b);
+tel
+node ck4_clk (a: int when b; b: bool)
 returns (c: int);
 let
   c = current(a);
diff --git a/test/should_work/ck7.lus b/test/should_work/ck7.lus
index 7cee30e1515e836acdc4d5a225233ebc895819bc..7e2f3df5ccb4b30d7a3ac5b34a759005620288c8 100644
--- a/test/should_work/ck7.lus
+++ b/test/should_work/ck7.lus
@@ -1,4 +1,16 @@
 node ck7(a: bool; m,n:int)
+returns(q:int; r: int);
+var
+  r_on_a : int when a;
+let
+  q,r_on_a = ck7_clk(a,m,n);
+  r = current (r_on_a);
+tel
+
+
+
+
+node ck7_clk(a: bool; m,n:int)
 returns(q:int; r: int when a);
 let
 	q = m+n;
diff --git a/test/should_work/clock1_2ms.lus b/test/should_work/clock1_2ms.lus
index 4b0a51af7b342429ce11d83d2bae6e189a289f93..1ebac921a3e9d0775505deb34cf6247e08e95871 100644
--- a/test/should_work/clock1_2ms.lus
+++ b/test/should_work/clock1_2ms.lus
@@ -11,10 +11,17 @@ let
    Clock2ms = true -> ( not pre(Clock2ms) ) ;
 tel
 
-node clock1_2ms(dummy : bool)
+node clock1_2ms_clk(dummy : bool)
 returns (Clock1ms: bool; Clock2ms : bool when Clock1ms) ;
 let
 	Clock1ms = Clock1ms_node(dummy);
 	Clock2ms = Clock2ms_node(dummy when Clock1ms);
 tel
 
+node clock1_2ms(dummy : bool) returns (Clock1ms: bool; Clock2ms : bool) ;
+var
+  Clock2ms_on_Clock1ms : bool when Clock1ms;
+let
+  Clock1ms, Clock2ms_on_Clock1ms = clock1_2ms_clk(dummy);
+  Clock2ms = current( Clock2ms_on_Clock1ms);
+tel
diff --git a/test/should_work/clock_ite.lus b/test/should_work/clock_ite.lus
index cb7c16a3f59a06fd2433ccc5f5ab86660a35eb94..a639db8338d4ce77ce596d0aa8f1c10ddee369cc 100644
--- a/test/should_work/clock_ite.lus
+++ b/test/should_work/clock_ite.lus
@@ -1,6 +1,14 @@
 
 
-node clock_ite(a: bool; b: bool) returns (c: bool when a);
+node clock_ite(a: bool; b: bool) returns (c: bool);
+ var
+  c_on_a: bool when a;
+
+let 
+  c_on_a = clock_ite_clk(a,b);
+  c = current(c_on_a);
+tel
+node clock_ite_clk(a: bool; b: bool) returns (c: bool when a);
 -- var
 --  z: bool;
 
diff --git a/test/should_work/filliter.lus b/test/should_work/filliter.lus
index 3ce384e5a60d5c22c06a062e2fd9e68f4f271fed..e29f7ff2e6aedbf556e4f4c671f1b3594c38938b 100644
--- a/test/should_work/filliter.lus
+++ b/test/should_work/filliter.lus
@@ -16,8 +16,16 @@ let
         acc_out = res + 1;
 tel
 
-node filliter(c: bool; i1, i2: int when c) returns (s1, s2: int^NBC when c);
+node filliter(c: bool; i1, i2: int) returns (s1, s2: int^NBC);
+var
+  s1_on_c,s2_on_c: int^NBC when c;
+let
+  s1_on_c,s2_on_c = filliter_clk(c, i1 when c, i2 when c);
+  s1 = current (s1_on_c);
+  s2 = current (s2_on_c);
+tel
 
+node filliter_clk(c: bool; i1, i2: int when c) returns (s1, s2: int^NBC when c);
 var x : int^4 when c;
     bid1,  bid2 : int when c;
 
diff --git a/test/should_work/hanane.lus b/test/should_work/hanane.lus
index c770c2eba0f13eafcee1ea89fbb1dffa3f0f35bd..8e8fd2af8354319aa55e8e1933acf7e38579b222 100644
--- a/test/should_work/hanane.lus
+++ b/test/should_work/hanane.lus
@@ -9,7 +9,12 @@ const
   b: bool = true;
   c: real = 3.14;
 
-node hanane(a1: bool; b1:  string2d when a1; c1: tabStruct when a1) 
+node hanane(a1: bool; b1:  string2d; c1: tabStruct) 
+  returns (res: bool);
+let
+  res = current(hanane_clk(a1,b1 when a1, c1 when a1));
+tel
+node hanane_clk(a1: bool; b1:  string2d when a1; c1: tabStruct when a1) 
   returns (res: bool when a1);
 var
   h1: int^4;
diff --git a/test/should_work/lustre_test1_ok.lus b/test/should_work/lustre_test1_ok.lus
index 0c2d029ed4afe98ec381491aefc3e6b68779326a..cc56889c600306cdfa6fc341e3d37e6cc53a5e48 100644
--- a/test/should_work/lustre_test1_ok.lus
+++ b/test/should_work/lustre_test1_ok.lus
@@ -10,6 +10,14 @@ let
 tel
 
 node lustre_test1_ok
+        (In1:real;cl1_2:bool;cl1_4:bool; In2:real;cl2_6:bool; In3:bool)
+returns (out1:real;Out2:real;Out3:real);
+
+let
+  out1, Out2, Out3 = lustre_test1_ok_clk(In1,cl1_2,cl1_4, In2,cl2_6 when cl1_2, In3 when cl1_4);
+tel
+
+node lustre_test1_ok_clk
         (In1:real;cl1_2:bool;cl1_4:bool; In2:real;cl2_6:bool when cl1_2; In3:bool when cl1_4)
 returns (out1:real;Out2:real;Out3:real);
 var Sum:real;
diff --git a/test/should_work/multiclock.lus b/test/should_work/multiclock.lus
index 1d4a07b5db081bff12c39b570af9944bf684afa9..74416720769356c45fa89f0318f2b68d4a9e771a 100644
--- a/test/should_work/multiclock.lus
+++ b/test/should_work/multiclock.lus
@@ -1,4 +1,13 @@
-node multiclock ( x, y: int; c: bool; z: int when c )
+node multiclock ( x, y: int; c: bool; z: int )
+        returns ( s: int);
+var
+  h: bool when c ;
+  u: int when h ;
+let
+  s = current(multiclock_clk ( x, y; c; z when c ));
+tel
+
+node multiclock_clk ( x, y: int; c: bool; z: int when c )
         returns ( s: int when c);
 var
   h: bool when c ;
diff --git a/test/should_work/sample_time_change.lus b/test/should_work/sample_time_change_MainNode.lus
similarity index 97%
rename from test/should_work/sample_time_change.lus
rename to test/should_work/sample_time_change_MainNode.lus
index 024a17c7e5054d4e8bf06fcb213d67b464bdc212..dc8ee31f329938da8233e8ef6caddc778415af54 100644
--- a/test/should_work/sample_time_change.lus
+++ b/test/should_work/sample_time_change_MainNode.lus
@@ -5,7 +5,7 @@ using the compiler   :		Simulink to Lustre   CURRENT VERSION!!!
 
 
 /**************** The MainNode node of the model ****************/
-node MainNode (In3:real)
+node sample_time_change_MainNode (In3:real)
 returns (Out2:real);
 var cl1_4_2, cl1_12_3 :bool;
     Out2_ :real when cl1_4_2 ;
@@ -18,6 +18,7 @@ tel
 
 
 /****************** All the nodes of the Model ******************/
+
 node sample_time_change (cl1_4_2, cl1_12_3:bool; In3:real when cl1_12_3)
 returns (Out2:real when cl1_4_2);
 var Unit_Delay1:real when cl1_12_3;
diff --git a/test/should_work/test_merge.lus b/test/should_work/test_merge.lus
index 6aefb4e82ad9639353b22dd2206faf4860fa9cd2..6ef5e1e16f9b2ee655f2ab880a97b6f78794c1c3 100644
--- a/test/should_work/test_merge.lus
+++ b/test/should_work/test_merge.lus
@@ -1,5 +1,15 @@
 type piece = enum { Pile, Face, Tranche }; ---
 node test_merge(clk: piece; ---
+   i1 : int ; 
+   i2 : int; 
+   i3 : int) 
+returns (y: int); ---
+  let
+  y = test_merge_clk(clk,i1 when Pile(clk), i2 when Face(clk), i3 when Tranche(clk));
+  tel
+ 
+
+node test_merge_clk(clk: piece; ---
    i1 : int when Pile(clk) ; 
    i2 : int when Face(clk); 
    i3 : int when Tranche(clk)) 
diff --git a/test/site.exp b/test/site.exp
index 4c109584acb6740d84d831388dbc969303c3fdff..221e6682c39436b30522f701deaad69db28a45c6 100644
--- a/test/site.exp
+++ b/test/site.exp
@@ -130,11 +130,34 @@ proc nonemptyfile {filename} {
 
 package require fileutil
 
-proc contains_extern {f} {
-
-    set pattern {extern}    
-    set match  [llength [fileutil::grep $pattern $f]]
-    return [expr {$match == 0 }]
+# test if file $f contain the string $str
+proc does_not_contain_string {f str} {
+    set occ  [llength [fileutil::grep $str $f]]
+    if { ($occ == 1 ) } { puts " $f contains $occ occurence of $str" }
+    if { ($occ > 1 ) } { puts " $f contains $occ occurence(s) of $str" }
+    return [expr { $occ == 0 }]
 }
 
+# do no try to use lurette on files that contains extern nodes or package.
+# Package won't work  because appending the tested lustre file with the 
+# generated oracle as I do is wrong in presence of package (fixme)
+proc do_ecexe_vs_exec {f} {
+    if { 
+        [does_not_contain_string "$f" "enum "] &&
+        [does_not_contain_string "$f" "extern"] &&
+        [does_not_contain_string "$f" "package"] 
+    } { 
+        return 1
+    }
+    return 0
+}
 
+proc do_2c_vs_exec {f} {
+    if { 
+        [does_not_contain_string "$f" "extern"] &&
+        [does_not_contain_string "$f" "package"] 
+    } { 
+        return 1
+    }
+    return 0
+}
diff --git a/todo.org b/todo.org
index e6ccf8b4167d443113a4decb6034a4cd51ac57c4..07b150f4c84c565698f83a86df8092f5a7ddf762 100644
--- a/todo.org
+++ b/todo.org
@@ -102,39 +102,91 @@ et que ca marche tres bien. Ce qui prouve bien que ca ne sert a rien cette affai
 ** TODO divergence -exec et -2c
    - State "TODO"       from ""           [2014-07-11 Fri 12:02]
 
+grep "FAIL:" lus2lic.log | grep "exec" | grep "\-2c" | sed s/'FAIL: Try to compare lus2lic -exec and -2c:'/-/
 
 1. ../utils/compare_exec_and_2c should_work/ck5.lus
-2. ../utils/compare_exec_and_2c should_work/testPilote.lus
-3. ../utils/compare_exec_and_2c should_work/testCapt.lus
-4. ../utils/compare_exec_and_2c should_work/test_node_expand2.lus
-5. ../utils/compare_exec_and_2c should_work/test_node_expand.lus
-6. ../utils/compare_exec_and_2c should_work/X6.lus
-7. ../utils/compare_exec_and_2c should_work/sincos.lus
-8. ../utils/compare_exec_and_2c should_work/clock_ite.lus
-9. ../utils/compare_exec_and_2c should_work/integrator.lus
-10. ../utils/compare_exec_and_2c should_work/complex.lus
-11. ../utils/compare_exec_and_2c should_work/PCOND1.lus
-12. ../utils/compare_exec_and_2c should_work/lustre_test1_ok.lus
-13. ../utils/compare_exec_and_2c should_work/sample_time_change.lus
-14. ../utils/compare_exec_and_2c should_work/CURRENT.lus
-15. ../utils/compare_exec_and_2c should_work/multiclock.lus
-16. ../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
-17. ../utils/compare_exec_and_2c should_work/multipar.lus
-18. ../utils/compare_exec_and_2c should_work/pack1.lus
-19. ../utils/compare_exec_and_2c should_work/bob.lus
-20. ../utils/compare_exec_and_2c should_work/test_condact.lus
-21. ../utils/compare_exec_and_2c should_work/ck4.lus
-22. ../utils/compare_exec_and_2c should_work/filliter.lus
-23. ../utils/compare_exec_and_2c should_work/X2.lus
-24. ../utils/compare_exec_and_2c should_work/hanane.lus
-25. ../utils/compare_exec_and_2c should_work/ck3.lus
-26. ../utils/compare_exec_and_2c should_work/ck7.lus
-27. ../utils/compare_exec_and_2c should_work/PCOND.lus
-28. ../utils/compare_exec_and_2c should_work/ck2.lus
-29. ../utils/compare_exec_and_2c should_work/X.lus
-30. ../utils/compare_exec_and_2c should_work/clock1_2ms.lus
+  -> erreur de clock !
 
+2. ../utils/compare_exec_and_2c should_work/test_node_expand2.lus
+  -> -2110104000 est n'est pas un entier acceptable pour lutin sur les machines 32 bits...
 
+3. ../utils/compare_exec_and_2c should_work/test_node_expand.lus
+  -> idem
+
+4. ../utils/compare_exec_and_2c should_work/sincos.lus
+  -> une erreur en mode -exec au step 2 (nil)
+
+5. ../utils/compare_exec_and_2c should_work/clock_ite.lus
+  -> pb!
+
+6. ../utils/compare_exec_and_2c should_work/integrator.lus
+  -> pb d'arrondi (1305025.02198 vs 1305025.)
+
+7. ../utils/compare_exec_and_2c should_work/PCOND1.lus
+   -> pb d'arrondi / 32bits
+
+8. ../utils/compare_exec_and_2c should_work/CURRENT.lus
+   -> manisfestement, le comportement du current diverge...
+
+9. ../utils/compare_exec_and_2c should_work/TIME_STABLE.lus
+  -> pb!
+
+10. ../utils/compare_exec_and_2c should_work/multipar.lus
+   -> pb d'arrondi / 32bits
+
+11. ../utils/compare_exec_and_2c should_work/bob.lus
+    -> manisfestement, le comportement du current diverge...
+
+12. ../utils/compare_exec_and_2c should_work/test_condact.lus
+   -> pb!
+
+13. ../utils/compare_exec_and_2c should_work/array_concat.lus
+   -> le a.out fait un segmentation fault
+
+14. ../utils/compare_exec_and_2c should_work/ck4.lus
+    -> manisfestement, le comportement du current diverge...
+
+15. ../utils/compare_exec_and_2c should_work/filliter.lus
+    -> manisfestement, le comportement du current diverge...
+
+16. ../utils/compare_exec_and_2c should_work/X2.lus
+   -> pb!
+
+17. ../utils/compare_exec_and_2c should_work/hanane.lus
+    -> manisfestement, le comportement du current diverge...
+
+18. ../utils/compare_exec_and_2c should_work/ck3.lus
+    -> manisfestement, le comportement du current diverge...
+
+19. ../utils/compare_exec_and_2c should_work/ck2.lus
+    -> manisfestement, le comportement du current diverge...
+
+
+** TODO Divergences -exec et ecexe
+   - State "TODO"       from ""           [2014-07-11 Fri 16:54]
+
+ grep "FAIL:" lus2lic.log | grep "exec" | grep "ecexe" | sed s/'FAIL: Try to compare lus2lic -exec and ecexe:'/-/
+
+1. ../utils/test_lus2lic_no_node should_work/Gyroscope2.lus
+2. ../utils/test_lus2lic_no_node should_work/test_node_expand2.lus
+3. ../utils/test_lus2lic_no_node should_work/test_node_expand.lus
+4. ../utils/test_lus2lic_no_node should_work/modes3x2_v2.lus
+5. ../utils/test_lus2lic_no_node should_work/X6.lus
+6. ../utils/test_lus2lic_no_node should_work/filter.lus
+7. ../utils/test_lus2lic_no_node should_work/sincos.lus
+8. ../utils/test_lus2lic_no_node should_work/integrator.lus
+9. ../utils/test_lus2lic_no_node should_work/PCOND1.lus
+10. ../utils/test_lus2lic_no_node should_work/multiclock.lus
+11. ../utils/test_lus2lic_no_node should_work/multipar.lus
+12. ../utils/test_lus2lic_no_node should_work/activation2.lus
+13. ../utils/test_lus2lic_no_node should_work/bob.lus
+14. ../utils/test_lus2lic_no_node should_work/test_condact.lus
+15. ../utils/test_lus2lic_no_node should_work/activation1.lus
+16. ../utils/test_lus2lic_no_node should_work/Gyroscope.lus
+17. ../utils/test_lus2lic_no_node should_work/hanane.lus
+18. ../utils/test_lus2lic_no_node should_work/cond01.lus
+19. ../utils/test_lus2lic_no_node should_work/speedcontrol.lus
+20. ../utils/test_lus2lic_no_node should_work/PCOND.lus
 
 
 * Packages, modeles, etc.
diff --git a/utils/compare_exec_and_2c b/utils/compare_exec_and_2c
index b8ea179f3613ca3f5422fd172c4b43edaa3a021b..c19259ad919df79269cabf3a41d1124d3c4fb8de 100755
--- a/utils/compare_exec_and_2c
+++ b/utils/compare_exec_and_2c
@@ -39,7 +39,7 @@ else
     exit 2
 fi
 
-PORT=2000
+PORT=2001
 ./call-via-socket -server -addr 127.0.0.1 -port $PORT ./a.out &
 
 export PATH=/usr/local/tools/lustre/bin/:$PATH