diff --git a/bin/main.out b/bin/main.out
index d031f719f330283481cb2a8d0d6887b5f778f288..b621e44b2d756e9806f23b9b9edbd2ed5a304caf 100755
Binary files a/bin/main.out and b/bin/main.out differ
diff --git a/src/main.cmi b/src/main.cmi
index ca9d167290b5378a236827fa2383fbb97b1b0139..740246282506ff6bb6ff4cde753d15e271ac7c5e 100644
Binary files a/src/main.cmi and b/src/main.cmi differ
diff --git a/src/main.cmx b/src/main.cmx
index 3c05d0a00ce5ef285a7a4f3898e4045d3a7c55bd..5579100a531f037badfa5f20ae82afb22802bfc6 100644
Binary files a/src/main.cmx and b/src/main.cmx differ
diff --git a/src/main.ml b/src/main.ml
index 207ed6304c44f19a9befbe44b38a521e40bf9b87..94d35d4e1051e34ae750629a4c0d29f74701a8a3 100644
--- a/src/main.ml
+++ b/src/main.ml
@@ -102,14 +102,19 @@ let rec make_liste_index l c = match l with
 
 
 (*[quelle_roue l c] renvoi l'indice de la roue (dans la liste de roues l) avec laquelle il est plus rapide de traduire c*)
-let quelle_roue l c =
+let quelle_roue l c index_init =
+    let index = (char_to_index 0 c roue) in
+    let m = (if index < 14 then index else 27-index) in
+    let test = char_to_index 0 c (List.nth l index_init) in
+    let test_opt = (if test < 14 then test else 27-test) in 
+    if (test_opt <= m) then index_init else 
     (*i doit ĂŞtre 0 lors du premier appel*)
     let rec index_min m n i r =  match r with
         | [] -> n
         | e::t -> if e < 14 then (if e < m then (index_min e i (i+1) t) else index_min m n (i+1) t)
                   else (if 27-e < m then (index_min (27-e) i (i+1) t) else index_min m n (i+1) t)
     in 
-    index_min (char_to_index 0 c roue) 0 (List.length l) (make_liste_index l c);;
+    index_min m (List.length l) 0 (make_liste_index l c);;
 
 
 (*[tourner_list m c n i l] tourne n fois dans le sens de c la roue d'indice i dans la liste de roues l*)
@@ -123,7 +128,7 @@ let rec tourner_list c n i l =
 (*[commande_phase2 (i,l) roue] traduit le message l en commande en selectionnant pour chaque lettre la bonne antenne*)
 let rec commande_phase2 (i,l) liste_roues index_init = match l with
     | [] -> ""
-    | e::t -> let index = quelle_roue liste_roues e in
+    | e::t -> let index = quelle_roue liste_roues e index_init in
               let r = (if index = (List.length liste_roues) then roue else (List.nth liste_roues index)) in
               let (s,n) = translate e r in
               let sres = (if index = index_init then s else (String.concat "" ("S"::(string_of_int index)::s::[])) ) in
diff --git a/src/main.o b/src/main.o
index 02c7adb2e5e5f878b7677d9713ceafa1c29005f7..0a62970799e3ee2c10c248a4405ae5131139e29c 100644
Binary files a/src/main.o and b/src/main.o differ