diff --git a/src/Model/Geometry/ProfileXYZ.py b/src/Model/Geometry/ProfileXYZ.py
index 4ade5b68ad2216e9e128e38b9e564345e19e19c4..39a15c50f0d3f1247fa367fafb2636ccd2f1453c 100644
--- a/src/Model/Geometry/ProfileXYZ.py
+++ b/src/Model/Geometry/ProfileXYZ.py
@@ -168,7 +168,7 @@ class ProfileXYZ(Profile, SQLSubModel):
                         lambda s: s.id == sl,
                         data["sediment_layers_list"].sediment_layers
                     )
-                )
+                , None)
 
             data["profile"] = new
             new._points = PointXYZ._db_load(execute, data.copy())
diff --git a/src/View/MainWindow.py b/src/View/MainWindow.py
index b08ac9436548843a597afead4f450ba87f99f304..cc651de4fa3ced41c6107edb3fb76c0f05a927c0 100644
--- a/src/View/MainWindow.py
+++ b/src/View/MainWindow.py
@@ -1627,6 +1627,8 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
             return None
 
         solver3 = GenericSolver(solver1.name+" - "+solver2.name)
+        solver4 = GenericSolver(solver1.name)
+        solver5 = GenericSolver(solver2.name)
 
         result1 = solver1.results(
                         self._study,
@@ -1657,27 +1659,54 @@ class ApplicationWindow(QMainWindow, ListedSubWindow, WindowToolKit):
         # return [result1, result2]
 
         result3 = Results(self._study, solver3)
+        result4 = Results(self._study, solver1)
+        result5 = Results(self._study, solver2)
         result3.set("nb_reach", result1.get("nb_reach"))
+        result4.set("nb_reach", result1.get("nb_reach"))
+        result5.set("nb_reach", result1.get("nb_reach"))
         result3.set("nb_profile", result1.get("nb_profile"))
+        result4.set("nb_profile", result1.get("nb_profile"))
+        result5.set("nb_profile", result1.get("nb_profile"))
         ts = list(result1.get("timestamps").intersection(result2.get("timestamps")))
         result3.set("timestamps", ts)
+        result4.set("timestamps", ts)
+        result5.set("timestamps", ts)
 
         for i in range(int(result1.get("nb_reach"))):
             # Add reach to results reach list
             r = result3.river.add(i)
+            r = result4.river.add(i)
+            r = result5.river.add(i)
 
         for timestamp in result3.get("timestamps"):
             for r in range(int(result1.get("nb_reach"))):
                 reach1 = result1.river.reach(r)
                 reach2 = result2.river.reach(r)
                 reach3 = result3.river.reach(r)
+                reach4 = result4.river.reach(r)
+                reach5 = result5.river.reach(r)
                 for p, (profile1, profile2) in enumerate(zip(reach1.profiles, reach2.profiles)):
                     for key in ["Z", "Q", "V"]:
                         d1 = profile1.get_ts_key(timestamp, key)
                         d2 = profile2.get_ts_key(timestamp, key)
-                        reach3.set(p, timestamp, key, d1-d2)
-
-        return [result1, result2, result3]
+                        d = d1-d2
+                        reach3.set(p, timestamp, key, d)
+                        reach4.set(p, timestamp, key, d1)
+                        reach5.set(p, timestamp, key, d2)
+                    limits = reach3.profile(p).geometry.get_water_limits(
+                            reach3.profile(p).get_ts_key(timestamp, "Z")
+                    )
+                    reach3.set(
+                            p, timestamp,
+                            "water_limits",
+                            limits
+                        )
+                    limits = profile1.get_ts_key(timestamp, "water_limits")
+                    reach4.set(p, timestamp, "water_limits", limits)
+                    limits = profile2.get_ts_key(timestamp, "water_limits")
+                    reach5.set(p, timestamp, "water_limits", limits)
+
+        return [result4, result5, result3]
 
     def open_results_adists(self):
         if self._study is None:
diff --git a/src/View/Results/PlotAC.py b/src/View/Results/PlotAC.py
index 4c85cabf36be75e26853e9f2f802d615f02aeece..a8204708bb3e19f04e7caf5ec56d857154f0d3c1 100644
--- a/src/View/Results/PlotAC.py
+++ b/src/View/Results/PlotAC.py
@@ -144,7 +144,7 @@ class PlotAC(PamhyrPlot):
         self.update()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.update()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotH.py b/src/View/Results/PlotH.py
index 92b8155ad8871c808c365ee3883d14269673a1d7..d5fd0e738fd71774d4efde2c5e5cec5b08fb162a 100644
--- a/src/View/Results/PlotH.py
+++ b/src/View/Results/PlotH.py
@@ -62,8 +62,8 @@ class PlotH(PamhyrPlot):
 
         self._isometric_axis = False
 
-        self._auto_relim_update = False
-        self._autoscale_update = False
+        #self._auto_relim_update = False
+        #self._autoscale_update = False
 
     @property
     def results(self):
@@ -156,7 +156,7 @@ class PlotH(PamhyrPlot):
         self.update()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.draw()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotRKC.py b/src/View/Results/PlotRKC.py
index 3951e6acd7819f89b65a9f2ad26051c8ef4cea1e..ea21f43507ef117efd4aa6256d07e8936dae021e 100644
--- a/src/View/Results/PlotRKC.py
+++ b/src/View/Results/PlotRKC.py
@@ -318,7 +318,7 @@ class PlotRKC(PamhyrPlot):
         self.update_current()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
+        self._current_res_id = res_id
         self.update()
 
     def set_timestamp(self, timestamp):
diff --git a/src/View/Results/PlotXY.py b/src/View/Results/PlotXY.py
index 71dcb4b4558ba93d95665b533090225c741527db..013e746e2821e38ae21db29ecf547d00b2a3cc66 100644
--- a/src/View/Results/PlotXY.py
+++ b/src/View/Results/PlotXY.py
@@ -166,6 +166,7 @@ class PlotXY(PamhyrPlot):
         if reach.geometry.number_profiles == 0:
             self._init = False
             return
+        self.line_xy = []
         # TODO uncomment to draw all the reaches
         # self.draw_other_profiles(reaches)
         for xy in zip(reach.geometry.get_x(),
@@ -315,9 +316,8 @@ class PlotXY(PamhyrPlot):
         self.update_idle()
 
     def set_result(self, res_id):
-        self._current_result_id = res_id
-        self.update_profile()
-        self.update_idle()
+        self._current_res_id = res_id
+        self.update()
 
     def set_timestamp(self, timestamp):
         self._current_timestamp = timestamp
diff --git a/src/View/Results/Table.py b/src/View/Results/Table.py
index ac9224d1e3565a3be31ba6fab955dc616211dd46..13d7c29dfe53a2b1d38e741363591f6f355a044b 100644
--- a/src/View/Results/Table.py
+++ b/src/View/Results/Table.py
@@ -89,15 +89,22 @@ class TableModel(PamhyrTableModel):
                     return f"{p.rk:.4f}"
                 return f"{p.name}"
             elif self._headers[column] == "water_elevation":
-                v = self._lst[row].get_ts_key(self._timestamp, "Z")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "Z")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "discharge":
-                v = self._lst[row].get_ts_key(self._timestamp, "Q")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "Q")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "velocity":
-                q = self._lst[row].get_ts_key(self._timestamp, "Q")
-                z = self._lst[row].get_ts_key(self._timestamp, "Z")
-                v = self._lst[row].get_ts_key(self._timestamp, "V")
+                try:
+                    v = self._lst[row].get_ts_key(self._timestamp, "V")
+                except:
+                    v = 0.0
                 return f"{v:.4f}"
             elif self._headers[column] == "width":
                 z = self._lst[row].get_ts_key(self._timestamp, "Z")
diff --git a/src/View/Results/Window.py b/src/View/Results/Window.py
index d06ba627287392edc233317ab48bc35402b6bde5..f01313a9affc2662bc988997283762253dc0e29d 100644
--- a/src/View/Results/Window.py
+++ b/src/View/Results/Window.py
@@ -438,6 +438,7 @@ class ResultsWindow(PamhyrWindow):
             self.update_table_selection_profile(profile_id)
 
         if solver_id is not None:
+            self._current_results = solver_id
             self.plot_xy.set_result(solver_id)
             self.plot_ac.set_result(solver_id)
             self.plot_rkc.set_result(solver_id)
@@ -917,10 +918,4 @@ class ResultsWindow(PamhyrWindow):
         return my_dict
 
     def get_timestamps(self):
-        if len(self._results) == 1:
-            self._timestamps = sorted(list(self._results[0].get("timestamps")))
-        else:  # len(self._results) == 2:
-            self._timestamps = sorted(list(
-                self._results[0].get("timestamps").intersection(
-                    self._results[1].get("timestamps"))
-            ))
+        self._timestamps = sorted(list(self._results[0].get("timestamps")))
diff --git a/tests_cases/Saar/Saar.pamhyr b/tests_cases/Saar/Saar.pamhyr
index 9f1c08bfece12cf21069193a611f9ba41d04fc5b..3ed59054f0eeb9bae9d534239cbddf89b15c06ab 100644
Binary files a/tests_cases/Saar/Saar.pamhyr and b/tests_cases/Saar/Saar.pamhyr differ