I've been using these subroutines for quite a while. They'll definitely solve your problem. Drawback might be the space it takes up on ISY, and the fact that you might need to manually reset the data if you need to restore ISY to an earlier time.
https://wiki.universal-devices.com/index.php?title=ISY-99i_Generic_Calendar_Using_Programs_and_Variables