So far I've tinkered with a conditional in the rotation - and it got me the result but for only one cycle (I need this to ideally continue indefinitely). The script would become a bloated series of elif's and felt there has got to be a better way.

I tried building the curve in CHOP's using wave set to triangle but became really fiddly and not sure how to the allow for a non uniform (a) and (b) size.

Indeed it doesn't directly solve my issue but think I could use it to make it work. Was a bit perplexed (still am a bit) at the modulo operator.

I've always know it to working in the following way (just through basic python learning)5%4 = 1. 4 fits 1x into 5 leaving 1 remainder

In your example you are leveraging non divisible to control the state right?4%5 = 4?? 5 does not fit into 4 - so it returns the original 4 as the remainder? Is that how it works?5%5 = 06%5 = 1 (we repeat…)

EDIT: Got it working by the way - just bind the rotation to attr and call it in the light rotate parameter!point(“/obj/geo1/rotator/”, 0, “rotation”, 0)