diff --git a/dynamics/Dynamic.py b/dynamics/Dynamic.py
index 210ca446051e32c24b38e7fa3764839e414f498e..3049b8c2c355d6407a241cc1e1c94d8a0360db13 100644
--- a/dynamics/Dynamic.py
+++ b/dynamics/Dynamic.py
@@ -137,10 +137,10 @@ class TrivialDynamic(Dynamic):
         return 0 <= index and index <= len(self.d_steps)
     
     def get_indices_within_p(self, p_start, p_end):
-        return range(p_start, p_end)
+        return pd.RangeIndex(p_start, p_end)
     
     def get_indices_within(self, i_start, i_end):
-        return range(i_start, i_end)
+        return pd.RangeIndex(i_start, i_end)
 
     def get_index_of(self, position):
         return position
@@ -224,7 +224,7 @@ class BackedDynamic(Dynamic):
         return self.step_size_p(self.indices.index(index))
     
     def step_sizes(self):
-        return [self.step_size_p(position) for position in range(self.number_of_steps)]
+        return [self.step_size_p(position) for position in range(self.number_of_steps())]
 
     def get_sub_dynamic_p(self, positions):
         if any(position < 0 or len(self.indices) <= position for position in positions):
@@ -481,7 +481,9 @@ def resample_from_backed(values, dynamic, source_p_start, source_p_end, target_d
                 target_i_end_prev = target_dynamic.get_index_of(target_p_end_prev)
             source_p_end = dynamic.get_position_of(target_i_end_prev)
             target_indices = target_dynamic.get_indices_within(target_i_end_prev, target_i_end)
-            target_values.loc[target_indices] = values[dynamic.indices[source_p_end]]            
+            target_values.loc[target_indices] = values[dynamic.indices[source_p_end]]
+        else:
+            source_p_end = dynamic.get_position_of(target_i_end)
     for source_position in range(source_p_start, source_p_end):
         target_indices = target_dynamic.get_indices_within(dynamic.indices[source_position], dynamic.indices[source_position + 1])
         target_values.loc[target_indices] = values[dynamic.indices[source_position]]