I am not sure what you mean by ‘Corrupt’ a program. The program is not being corrupted at all. Firmware 2.1.0 and 2.1.2 have use different implementations. Specifically, firmware 2.1.0 will ignore overlapping programs — if a program is still running when a new program is scheduled to start, the new program will be ignored. In firmware 2.1.2, it can stack programs except stations that are already in the queue to run. For example, if program 2 is trying to start while program 1 is running, all stations that have finished running program 1 will be scheduled. However, if a station is running or in the queue to run while the same station is being requested to run by program 2, that station cannot be scheduled.
I don’t know how Pro-C automatically stacks programs, but I consider this a non-trivial problem. The reason is that you can set the repeat cycle so small that it causes the program to stack forever. For example, if you request the program to repeat every 1 minute, for 100 times, and the program takes 60 minutes to run, what do you expect to happen? I don’t think Pro-C even supports such flexible repeating programs. Also, OpenSprinkler supports up to 14 different programs. With this level of capability, it needs to conserve resources.
If you set your program to repeat every 47 minutes, it WILL run immediately after the previous run finishes.