diff --git a/tangostationcontrol/tangostationcontrol/devices/beam.py b/tangostationcontrol/tangostationcontrol/devices/beam.py
index 2ad554c3e1285f28f04c071c5fdfa33146173300..357798272a1328c657d51697e90bcdbf09b016fe 100644
--- a/tangostationcontrol/tangostationcontrol/devices/beam.py
+++ b/tangostationcontrol/tangostationcontrol/devices/beam.py
@@ -9,6 +9,7 @@
 
 import numpy
 import datetime
+from functools import partial
 from tango.server import attribute, command, device_property
 from tango import AttrWriteType, DebugIt, DevState, DeviceProxy, DevVarStringArray, DevVarDoubleArray
 
@@ -105,7 +106,7 @@ class Beam(lofar_device):
         return delays
 
     @staticmethod
-    def _calculate_HBAT_bf_delays(delays: numpy.ndarray, HBAT_signal_input_delays: numpy.ndarray):
+    def _calculate_HBAT_bf_delays(delays: numpy.ndarray, HBAT_signal_input_delays: numpy.ndarray, HBAT_bf_delay_step_delays: numpy.ndarray):
         """
         Helper function that converts a signal path delay (in seconds) to an analog beam weight,
         which is a value per tile per dipole per polarisation.
@@ -115,10 +116,15 @@ class Beam(lofar_device):
 
         # Add signal input delay
         summed_delays = numpy.add(polarised_delays,HBAT_signal_input_delays)
-        
-        # Divide by 0.5ns and round
-        HBAT_bf_delays = numpy.array(summed_delays / 0.5e-09, dtype=numpy.int64)
 
+        # Find the right delay step by looking for the closest match in property RECV-> HBAT_bf_delay_step_delays
+        HBAT_bf_delays = numpy.zeros((96,32), dtype=numpy.int64)
+        distance = lambda x , y : numpy.absolute(x-y)
+        for tile in range(96):
+            for at in range(32):
+                delay = summed_delays[tile,at]
+                step = min(HBAT_bf_delay_step_delays,key=partial(distance,delay))
+                HBAT_bf_delays[tile,at] = numpy.int64(delay / step)
         return HBAT_bf_delays
 
     def _HBAT_set_pointing(self, pointing_direction: numpy.array, timestamp: datetime.datetime = datetime.datetime.now()):
@@ -129,7 +135,7 @@ class Beam(lofar_device):
         delays = self._HBAT_delays(pointing_direction, timestamp)
         
         # Convert delays into beam weights
-        HBAT_bf_delays = self._calculate_HBAT_bf_delays(delays, self.HBAT_signal_input_delays)
+        HBAT_bf_delays = self._calculate_HBAT_bf_delays(delays, self.HBAT_signal_input_delays, self.recv_proxy.HBAT_bf_delay_step_delays)
 
         # Write weights to RECV
         self.recv_proxy.HBAT_BF_delays_RW = HBAT_bf_delays
diff --git a/tangostationcontrol/tangostationcontrol/devices/recv.py b/tangostationcontrol/tangostationcontrol/devices/recv.py
index bff2817560ccb48c7e1a013eaf58510a3e65aafb..636b694a051b45fd6a1b7e797373080c9ec2cd06 100644
--- a/tangostationcontrol/tangostationcontrol/devices/recv.py
+++ b/tangostationcontrol/tangostationcontrol/devices/recv.py
@@ -51,39 +51,15 @@ class RECV(opcua_device):
     HBAT_bf_delay_step_delays = device_property(
         dtype="DevVarFloatArray",
         mandatory=False,
-        default_value=numpy.array([ 
-    0.0,
-	0.5228E-9,
-	0.9797E-9,
-	1.4277E-9,
-	1.9055E-9,
-	2.4616E-9,
-	2.9539E-9,
-	3.4016E-9,
-	3.8076E-9,
-	4.3461E-9,
-	4.9876E-9,
-	5.4894E-9,
-	5.7973E-9,
-	6.2707E-9,
-	6.8628E-9,
-	7.3989E-9,
-	8.0673E-9,
-	8.6188E-9,
-	9.1039E-9,
-	9.5686E-9,
-	10.0463E-9,
-	10.5774E-9,
-	11.0509E-9,
-	11.5289E-9,
-	11.9374E-9,
-	12.4524E-9,
-	13.0842E-9,
-	13.5936E-9,
-	13.9198E-9,
-	14.4087E-9,
-	14.9781E-9,
-	15.5063E-9],dtype=numpy.float64)
+        default_value=numpy.array([
+            0.0,        0.5228E-9,  0.9797E-9,  1.4277E-9,  1.9055E-9,
+            2.4616E-9,  2.9539E-9,  3.4016E-9,  3.8076E-9,  4.3461E-9,
+            4.9876E-9,  5.4894E-9,  5.7973E-9,  6.2707E-9,  6.8628E-9,
+            7.3989E-9,  8.0673E-9,  8.6188E-9,  9.1039E-9,  9.5686E-9,
+            10.0463E-9, 10.5774E-9, 11.0509E-9, 11.5289E-9, 11.9374E-9,
+            12.4524E-9, 13.0842E-9, 13.5936E-9, 13.9198E-9, 14.4087E-9,
+            14.9781E-9, 15.5063E-9
+        ],dtype=numpy.float64)
     )
 
     first_default_settings = [
diff --git a/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py b/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py
index 1e0b93ffa8625a5125d064b8a8877f43f2ed4824..09e10bdf2b4bc739b16b28c3e59d6b9ff0402e95 100644
--- a/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py
+++ b/tangostationcontrol/tangostationcontrol/test/devices/test_beam_device.py
@@ -71,5 +71,6 @@ class TestBeamDevice(base.TestCase):
             # verify if values are actually transformed
             HBAT_delays = proxy.HBAT_delays(numpy.array([["J2000","0deg","0deg"]] * 96).flatten())
             HBAT_signal_input_delays = numpy.random.rand(96,32)    # tango properties cannot be retrieved for mock devices
-            HBAT_bf_delays = beam.Beam._calculate_HBAT_bf_delays(numpy.array(HBAT_delays).reshape(96,16), HBAT_signal_input_delays)
+            HBAT_bf_delay_step_delays = numpy.random.rand(32)
+            HBAT_bf_delays = beam.Beam._calculate_HBAT_bf_delays(numpy.array(HBAT_delays).reshape(96,16), HBAT_signal_input_delays, HBAT_bf_delay_step_delays)
             self.assertNotEqual(HBAT_delays, HBAT_bf_delays)