diff --git a/src/Model/River.py b/src/Model/River.py
index dad5e824573c413c4fd33eb2ae8a8310a71ffab9..077cc7dbc4d85462a3cd6cd9157525936ad282d4 100644
--- a/src/Model/River.py
+++ b/src/Model/River.py
@@ -63,7 +63,7 @@ class River(Graph):
 
     @property
     def boundary_condition(self):
-        return self._boundary_condition.copy()
+        return self._boundary_condition
 
     def has_current_reach(self):
         return self._current_reach is not None
diff --git a/src/View/BoundaryCondition/BoundaryConditionWindow.py b/src/View/BoundaryCondition/BoundaryConditionWindow.py
index 5edac3414d054df3541f0044e0b1aa9f0d8d0b6c..7fcc91c9b849c685379fe82bb25b280ca396570d 100644
--- a/src/View/BoundaryCondition/BoundaryConditionWindow.py
+++ b/src/View/BoundaryCondition/BoundaryConditionWindow.py
@@ -331,11 +331,11 @@ class BoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
         )
 
     def add(self):
-        if len(self._lst) == 0:
+        rows = self.index_selected_rows()
+        if len(self._lst) == 0 or len(rows) == 0:
             self._table.add(0)
         else:
-            row = self.index_selected_row()
-            self._table.add(row)
+            self._table.add(rows[0])
 
     def delete(self):
         rows = self.index_selected_rows()
@@ -366,5 +366,10 @@ class BoundaryConditionWindow(ASubMainWindow, ListedSubWindow):
         self._table.redo()
 
     def edit(self):
-        win = EditBoundaryConditionWindow(data=None, parent=self)
-        win.show()
+        rows = self.index_selected_rows()
+        for row in rows:
+            win = EditBoundaryConditionWindow(
+                data=self._lst[row],
+                parent=self
+            )
+            win.show()