diff --git a/scintillation/averaging.py b/scintillation/averaging.py
index d2c783651f73aa39bb8583617f3fd4974b1a5141..1d6749aa54b08a0169cb0683678a0983fe482bd8 100644
--- a/scintillation/averaging.py
+++ b/scintillation/averaging.py
@@ -685,6 +685,11 @@ def round_up_datetime(datet, interval):
 def round_down_datetime(datet, interval):
     return datetime.utcfromtimestamp(numpy.floor(datet.timestamp() / interval) * interval).replace(tzinfo=timezone.utc)
 
+def get_station_and_beam_names(dataset):
+    stations_list = dataset['/'].attrs['OBSERVATION_STATIONS_LIST']
+    beam_name = list(dataset['/']['SUB_ARRAY_POINTING_000'].keys())[0]
+    station_name = stations_list[int(beam_name[-1])]
+    return station_name, beam_name
 
 def split_samples(dynspec_name,
                   metadata,
@@ -726,13 +731,12 @@ def split_samples(dynspec_name,
         station_name, *_ = metadata['BEAM_STATIONS_LIST']
         station_name = decode_str(station_name)
     else:
-        station_name, *_ = metadata['OBSERVATION_STATIONS_LIST']
+        station_name, beam_name = get_station_and_beam_names(dataset)
 
     if 'DATA' in dataset[dynspec_name]:
         data_array = dataset[dynspec_name]['DATA']
         nofch = 1 #TODO check if this is always the case for DYNSPEC data
     else:
-        beam_name = [ibeam for ibeam in dataset[dynspec_name].keys() if "BEAM" in ibeam ][0]
         data_array = dataset[dynspec_name][beam_name]['STOKES_0']
         #take median over channels for raw data
         nofch = dataset[dynspec_name][beam_name]['STOKES_0'].attrs['NOF_CHANNELS'][0]