The PulseCbusLevel command sets a group address to the specified level, then after the delay sets it to the final level. If you issue another PulseCBusLevel command before the first timer expires, it successfully resets the timer to the new time interval, but when the timer expires it sets the ga to the original final level, not the new final level. e.g. in the follow test code: PulseCBusLevel("Local", "Lighting", "Study", 30%, "0s", "0:00:10", 100%); Delay("0:0:5"); PulseCBusLevel("Local", "Lighting", "Study", 0%, "0s", "0:00:10", 50%); The ga is initially set to 30% and a 10 second timer started with a 100% expiry value After 5 seconds, the ga is set to 0% and a 10 second timer started with a 50% expiry value. After a further 10 seconds when the second timer expires, the ga is set to original final value of 100% and not 50% as expected. I assume this is not the intended behaviour? It works fine if you cancel the timer before the second pulse command as follows: PulseCBusLevel("Local", "Lighting", "Study", 30%, "0s", "0:00:10", 100%); Delay("0:0:5"); SetLightingLevel("Study", 0%, "0s"); // Cancel timer PulseCBusLevel("Local", "Lighting", "Study", 0%, "0s", "0:00:10", 50%);