diff --git a/mbtrack2/utilities/optics.py b/mbtrack2/utilities/optics.py
index 3c7ff926d21c268e6d9187a82db7e39304302965..79026f0d67edbbd8ea934f568376499235b23ec7 100644
--- a/mbtrack2/utilities/optics.py
+++ b/mbtrack2/utilities/optics.py
@@ -119,9 +119,10 @@ class Optics:
             self.periodicity = periodicity
 
         if self.periodicity > 1:
-            for i in range(self.periodicity - 1):
-                pos = np.append(twiss.s_pos,
-                                twiss.s_pos + twiss.s_pos[-1] * (i+1))
+            periods = np.arange(0, self.periodicity)
+            shift = periods*twiss.s_pos[-1]
+            shift = np.repeat(shift, len(twiss.s_pos))
+            pos = np.tile(twiss.s_pos.T, self.periodicity) + shift
         else:
             pos = twiss.s_pos