It stopped working mysteriously some time back, and I've just been dealing without it since then. I just decided to revisit it, and when I ran the macro, I got an "undefined function: mod" error in the Chat window. That struck me as odd since I know it worked in the past. I went to the wiki and found the entry for the mod function, but even though there are instructions about syntax, at the top of the page is a note that the function doesn't exist in MapTool.
When did this change? Is there an alternative function to get the same result (i.e., the remainder only from a division operation)?
I'm dropping the script as currently written under a spoiler tag in case reviewing it is helpful.
Spoiler
[h: x=input("NewElevation|0|What is the token's new elevation?")]
[h: abort(x)]
[h: assert(mod(NewElevation, 5) == 0, "Elevation must be divisible by 5")]
[h: assert(NewElevation>=0 && NewElevation<=995, "Elevation must be between 0 and 995")]
[h: selectedToken = getSelectedNames()]
[h: OldElevation = getProperty("Elevation", selectedToken)]
[h: OldHundredsDigit=FLOOR(OldElevation/100)]
[h: OldTensAndOnes=mod(OldElevation, 100)]
[h: OldTensDigit=FLOOR(OldTensAndOnes/10)]
[h: OldOnesDigit=mod(OldTensAndOnes,10)]
[h: NewHundredsDigit=FLOOR(NewElevation/100)]
[h: NewTensAndOnes=mod(NewElevation, 100)]
[h: NewTensDigit=FLOOR(NewTensAndOnes/10)]
[h: NewOnesDigit=mod(NewTensAndOnes,10)]
[h: setState("E"+OldHundredsDigit+"__",0,selectedToken)]
[h: setState("E_"+OldTensDigit+"_",0,selectedToken)]
[h: setState("E__"+OldOnesDigit, 0, selectedToken)]
[h, if(NewHundredsDigit == 0): setState("E"+NewHundredsDigit+"__",0,selectedToken);setState("E"+NewHundredsDigit+"__",1,selectedToken)]
[h, if(NewHundredsDigit == 0 && NewTensDigit == 0): setState("E_"+NewTensDigit+"_",0,selectedToken); setState("E_"+NewTensDigit+"_",1,selectedToken)]
[h, if(NewElevation == 0): setState("E__"+NewOnesDigit, 0, selectedToken); setState("E__"+NewOnesDigit, 1, selectedToken)]
[h: setProperty("Elevation", NewElevation, selectedToken)]
[h: abort(x)]
[h: assert(mod(NewElevation, 5) == 0, "Elevation must be divisible by 5")]
[h: assert(NewElevation>=0 && NewElevation<=995, "Elevation must be between 0 and 995")]
[h: selectedToken = getSelectedNames()]
[h: OldElevation = getProperty("Elevation", selectedToken)]
[h: OldHundredsDigit=FLOOR(OldElevation/100)]
[h: OldTensAndOnes=mod(OldElevation, 100)]
[h: OldTensDigit=FLOOR(OldTensAndOnes/10)]
[h: OldOnesDigit=mod(OldTensAndOnes,10)]
[h: NewHundredsDigit=FLOOR(NewElevation/100)]
[h: NewTensAndOnes=mod(NewElevation, 100)]
[h: NewTensDigit=FLOOR(NewTensAndOnes/10)]
[h: NewOnesDigit=mod(NewTensAndOnes,10)]
[h: setState("E"+OldHundredsDigit+"__",0,selectedToken)]
[h: setState("E_"+OldTensDigit+"_",0,selectedToken)]
[h: setState("E__"+OldOnesDigit, 0, selectedToken)]
[h, if(NewHundredsDigit == 0): setState("E"+NewHundredsDigit+"__",0,selectedToken);setState("E"+NewHundredsDigit+"__",1,selectedToken)]
[h, if(NewHundredsDigit == 0 && NewTensDigit == 0): setState("E_"+NewTensDigit+"_",0,selectedToken); setState("E_"+NewTensDigit+"_",1,selectedToken)]
[h, if(NewElevation == 0): setState("E__"+NewOnesDigit, 0, selectedToken); setState("E__"+NewOnesDigit, 1, selectedToken)]
[h: setProperty("Elevation", NewElevation, selectedToken)]