diff --git a/src/Solver/AdisTS.py b/src/Solver/AdisTS.py
index d632d21f6625448aad904337ea19f0c5637f92df..5f7356b4c351dacebaa6b3baf18d022133c42944 100644
--- a/src/Solver/AdisTS.py
+++ b/src/Solver/AdisTS.py
@@ -462,14 +462,14 @@ class AdisTSlc(AdisTS):
     @timer
     def read_bin(self, study, repertory, results, qlog=None, name="0"):
         repertory_results = os.path.join(repertory, "resultats")
-        fname = os.path.join(repertory, f"{name}.BIN")
-        fname = "AAA-silt.bin"
-        logger.info(f"read_bin: Start reading '{fname}' ...")
+
         files_bin_names = [el.split("/")[-1] for el in glob.glob(repertory_results+"/*.bin")]
         print("files names resultats: ", files_bin_names)
 
         ifilename = os.path.join(repertory_results, files_bin_names[0])
 
+        logger.info(f"read_bin: Start reading '{ifilename}' ...")
+
         print("reading ", ifilename)
         with open(ifilename, 'rb') as f:
             # header
@@ -549,16 +549,92 @@ class AdisTSlc(AdisTS):
                     data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
                 # end header
 
-            def ip_to_r(i): return iprofiles[
-                next(
-                    filter(
-                        lambda k: k[0] <= i <= k[1],
-                        iprofiles
-                    )
+        def ip_to_r(i): return iprofiles[
+            next(
+                filter(
+                    lambda k: k[0] <= i <= k[1],
+                    iprofiles
                 )
-            ]
+            )
+        ]
+
+        def ip_to_ri(r, i): return i - reach_offset[r]
+
+        path_files = map(lambda file: os.path.join(repertory_results, file), files_bin_names)
+
+        data_tmp = {}
+
+        for file_bin in path_files:
+            key_pol = file_bin.split("/")[-1][0:-4]
+            data_tmp[key_pol] = {}
+            with open(file_bin, 'rb') as f:
+                # header
+                # first line
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                data = np.fromfile(f, dtype=np.int32, count=3)
+                ibmax = data[0]  # number of reaches
+                ismax = data[1]  # total number of cross sections
+                kbl = data[2] * -1  # block size for .BIN header
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # second line
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                ibu = np.fromfile(f, dtype=np.int32, count=ibmax)
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # third line
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                data = np.fromfile(f, dtype=np.int32, count=2 * ibmax)
+                is1 = np.zeros(ibmax, dtype=np.int32)
+                is2 = np.zeros(ibmax, dtype=np.int32)
+                for i in range(ibmax):
+                    is1[i] = data[2 * i]  # first section of reach i (FORTRAN numbering)
+                    is2[i] = data[2 * i + 1]  # last section of reach i (FORTRAN numbering)
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # fourth line
+                pk = np.zeros(ismax, dtype=np.float32)
+                for k in range(0, ismax, kbl):
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                    pk[k:min(k + kbl, ismax)] = np.fromfile(f, dtype=np.float32, count=min(k + kbl, ismax) - k)
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # fifth line (useless)
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                zmin_OLD = np.fromfile(f, dtype=np.float32, count=1)[0]
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # sixth line
+                zf = np.zeros(ismax, dtype=np.float32)
+                z = np.zeros(ismax * 3, dtype=np.float32)
+                for k in range(0, ismax, kbl):
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                    z[3 * k:3 * min(k + kbl, ismax)] = np.fromfile(f, dtype=np.float32,
+                                                                   count=3 * (min(k + kbl, ismax) - k))
+                    # z[i*3+1] and z[i*3+2] are useless
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                zf = [z[i * 3] for i in range(ismax)]
+                # seventh line (useless)
+                for k in range(0, ismax, kbl):
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                    zero = np.fromfile(f, dtype=np.int32, count=ismax)
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                # end header
+                # data
+                data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                while data.size > 0:
+                    ismax = np.fromfile(f, dtype=np.int32, count=1)[0]
+                    t = np.fromfile(f, dtype=np.float64, count=1)[0]
+                    if not t in data_tmp[key_pol]:
+                        data_tmp[key_pol][t] = {}
+                    c = np.fromfile(f, dtype=np.byte, count=1)
+                    # possible values :
+                    # sediment : C, G, M, D, L, N, R
+                    # polutant : C, G, M, D
+                    phys_var = bytearray(c).decode()
+                    data_tmp[key_pol][t][phys_var] = {}
+                    real_data = np.fromfile(f, dtype=np.float32, count=ismax)
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (end)
+                    data_tmp[key_pol][t][phys_var] = real_data
+                    data = np.fromfile(f, dtype=np.int32, count=1)  # line length (bytes) (start)
+                # end data
 
-            def ip_to_ri(r, i): return i - reach_offset[r]
+        print(data_tmp["AAA-silt"])
 
     @timer
     def results(self, study, repertory, qlog=None, name=None):