Hey, Stahlregen ! A rave from the grave ... haven't heard from you in ages!
Actually a few things have changed in the syntax, e.g. as Amandio C found out, certain float - integer conversions... Don't remember the details, you have to look it up in the forum. I think the rounding changed, and whether 1.5 is converted to 1 or 2... that may affect the integer operations as performed with int, % etc.
In shifters preset however the problem is the line
lr = if(sw,lr,rand(10));
I wonder how this ever worked, because rand() is supposed to deliver a float value, not an integer. The next line
let = equal(lr,0)*sa + equal(lr,1)*sb + equal(lr,2)*sc .........
will never deliver anything else than zero because the chance that rand() spits out exactly an integer number like 1,2,3,4, etc. are zero and therefore equal (lr,1) will NEVER be true. The problem is solved easily by changing the line to
lr = if(sw,lr,int(rand(10)));
I don't know where this incompatibility was introduced. Apart from that I must say the compiler has improved a lot, with the introduction of huge arrays, loop processing and simplifications making the code more similar to C .... e.g. instead of x = above (y,2) you may now use x = (y >= 2) as in standard languages. Unfortunately there seems to be no reasonable tutorial.