diff --git a/SpectrumAWG/blacs_workers.py b/SpectrumAWG/blacs_workers.py
index aba623a864a56712a3926a26f6639f66d0e3886a..82621f327773b28242009e88cef4ab4a4ce72697 100644
--- a/SpectrumAWG/blacs_workers.py
+++ b/SpectrumAWG/blacs_workers.py
@@ -72,6 +72,7 @@ class SpectrumAWGWorker(Worker):
         with h5py.File(h5_file,'r') as f:
             group = f[f"devices/{device_name}"]
             function_conditional_programming = group.attrs.get("function_conditional_programming", "")
+            function_conditional_programming_args = group.attrs.get("function_conditional_programming_args", ())
             for ch in self.channels:
                 if fresh or len(self.smart_cache)+len(group[ch].attrs) > self.memory_segments:
                     # Reset smart programming and start writing memory from the beginning
@@ -136,8 +137,8 @@ class SpectrumAWGWorker(Worker):
             freq = instruction[1:num_tones+1]
             ampl = instruction[num_tones+1:2*num_tones+1]
             phase= instruction[2*num_tones+1:]
+            self.occupation_receiver.set_function(function_conditional_programming, function_conditional_programming_args)
             self.occupation_receiver.last_tweezer_params(index+1, len(self.smart_cache), freq, ampl, phase, num_samples, self.sample_rate)
-            self.occupation_receiver.set_function(function_conditional_programming)
 
         return initial_values
 
diff --git a/SpectrumAWG/labscript_devices.py b/SpectrumAWG/labscript_devices.py
index b58c58fbdfb5be4cfc5a15bf9519ec873c58ebef..84ce9028bce44a7f14fd1f219989629fd6c32b28 100644
--- a/SpectrumAWG/labscript_devices.py
+++ b/SpectrumAWG/labscript_devices.py
@@ -154,8 +154,9 @@ class SpectrumAWG(Device):
         internal_memory = 2**32 # 4GB
         self.max_sample_size = internal_memory//2//memory_segments
 
-    def set_conditional_reprogramming(self, function_name):
+    def set_conditional_reprogramming(self, function_name, function_args=None):
         self.function_conditional_programming = function_name
+        self.function_conditional_programming_args = function_args
 
     def do_checks(self):
         if len(self.child_devices)>1:
@@ -174,6 +175,7 @@ class SpectrumAWG(Device):
             group[output.connection].require_group("labels")
 
             group.attrs["function_conditional_programming"] = getattr(self,"function_conditional_programming","")
+            group.attrs["function_conditional_programming_args"] = getattr(self,"function_conditional_programming_args",tuple())
 
             for i,t in enumerate(np.sort(change_times)):
                 group[output.connection].attrs[str(i)] = output.instructions[t][:-1]