diff --git a/src/Solver/AdisTS.py b/src/Solver/AdisTS.py
index ebed2097268a644681c233afd762a69c64aa361f..56f2fa4e7389f55edffa2a79969c33c1b4ee9d5f 100644
--- a/src/Solver/AdisTS.py
+++ b/src/Solver/AdisTS.py
@@ -410,10 +410,16 @@ class AdisTSwc(AdisTS):
     def _export_ICs_AdisTS_Spec(self, study, pol_ics_spec_data,
                                 f, qlog, name="0"):
 
+        edges = study.river.enable_edges()
         for ic_spec in pol_ics_spec_data:
+            id_reach = ic_spec.reach
+            reach = next((x for x in edges if x.id == id_reach), None)
+            if reach is None:
+                continue
+
             f.write(" ".join((f"{ic_spec.name}",
                               "=",
-                              f"{ic_spec.reach}",
+                              f"{study.river.get_edge_id(reach)+1}",
                               f"{ic_spec.start_rk}",
                               f"{ic_spec.end_rk}",
                               f"{ic_spec.concentration}",
@@ -470,13 +476,14 @@ class AdisTSwc(AdisTS):
             id_edges = list(map(lambda x: x.id, edges))
 
             id_reach = d90_spec.reach
+            reach = next((x for x in edges if x.id == id_reach), None)
 
-            if id_reach not in id_edges:
+            if reach is None:
                 return
 
             f.write(" ".join((f"{d90_spec.name}",
                               "=",
-                              f"{id_reach}",
+                              f"{study.river.get_edge_id(reach)+1}",
                               f"{d90_spec.start_rk}",
                               f"{d90_spec.end_rk}",
                               f"{d90_spec.d90}\n")))
@@ -526,23 +533,22 @@ class AdisTSwc(AdisTS):
 
             edges = study.river.enable_edges()
 
-            id_edges = list(map(lambda x: x.id, edges))
-
             id_reach = dif_spec.reach
+            reach = next((x for x in edges if x.id == id_reach), None)
 
-            if id_reach not in id_edges:
+            if reach is None:
                 return
 
             if dif_spec.method != "generique":
                 f.write(" ".join((f"{dif_spec.method}",
                                   "=",
-                                  f"{id_reach}",
+                                  f"{study.river.get_edge_id(reach)+1}",
                                   f"{dif_spec.start_rk}",
                                   f"{dif_spec.end_rk}",
                                   f"{dif_spec.dif}\n")))
             else:
                 f.write(" ".join((f"{dif_spec.method}",
-                                  f"=" f"{id_reach}",
+                                  f"=" f"{study.river.get_edge_id(reach)+1}",
                                   f"{dif_spec.start_rk}",
                                   f"{dif_spec.end_rk}",
                                   f"{dif_spec.dif}",
@@ -602,13 +608,14 @@ class AdisTSwc(AdisTS):
         id_edges = list(map(lambda x: x.id, edges))
 
         id_reach = outputrk.reach
+        reach = next((x for x in edges if x.id == id_reach), None)
         rk = outputrk.rk
         title = outputrk.title
 
-        if id_reach not in id_edges:
+        if reach is None:
             return
 
-        f.write(f"output = {id_reach} {rk} {title}\n")
+        f.write(f"output = {study.river.get_edge_id(reach)+1} {rk} {title}\n")
 
     @timer
     def read_bin(self, study, repertory, results, qlog=None, name="0"):