diff --git a/CAL/CalibrationProcessing/lib/processing/solver.py b/CAL/CalibrationProcessing/lib/processing/solver.py
index 6a12c575a6d65b241566ff5292e4254c68b24920..16d036f83c9aa5d6164dd2bce931583e198f1a15 100644
--- a/CAL/CalibrationProcessing/lib/processing/solver.py
+++ b/CAL/CalibrationProcessing/lib/processing/solver.py
@@ -65,10 +65,10 @@ def _compute_pointing_matrices_per_station_frequency_beam(dataset, datatable, ce
 
     pointing_matrix = numpy.matrix(numpy.zeros((n_beams, n_antennas), dtype=complex))
 
-    for i in range(n_beams):
+    for i, beam_str in enumerate(datatable):
         for j in range(n_antennas):
-            l = datatable[central_beam]['mean']['l'][0] - datatable[str(i)]['mean']['l'][0]
-            m = datatable[central_beam]['mean']['m'][0] - datatable[str(i)]['mean']['m'][0]
+            l = datatable[central_beam]['mean']['l'][0] - datatable[beam_str]['mean']['l'][0]
+            m = datatable[central_beam]['mean']['m'][0] - datatable[beam_str]['mean']['m'][0]
             x, y = rotated_coordinates[j, 0:2]
 
             phase = _compute_expected_phase_delay(l, m, x, y, frequency)
@@ -249,13 +249,11 @@ def _solve_gains_per_frequency(dataset, datatable, frequency, direct_complex=Tru
                                                                    datatable,
                                                                    central_beam,
                                                                    frequency)
-    n_beams = len(datatable)
-
     result = dict()
 
     for polarization in ['XX', 'XY', 'YX', 'YY']:
         visibilities = numpy.matrix(
-            [datatable[str(i)]['mean'][polarization] for i in range(n_beams)])
+            [datatable[beam_str]['mean'][polarization] for beam_str in datatable])
 
         if direct_complex is True:
             result[polarization] = _solve_gains(visibilities, matrix, **kwargs)