Agreed the solution could be more elegant.If a change to substr() was going to be made I'd strongly suggest keeping the three parameter format.
The bugs I take longest to track down are those involving overloaded operators and optional function arguments. And spelling mistakes 
I suggest that the change should allow a negative value as the third parameter (some BASICs support this IIRC). For example...
code:
substr("NO BALL GAMES ALLOWED",4,-1) -> "BALL GAMES ALLOWED"
substr("ADOSFILE.TXT",5,-5) -> "FILE"
You keep the three parameters so function prototype checking will still catch you if you forget one, and you extend the usefulness of the function.
If you think the "9999" might be unclear in the current version, then:
code:
$EndOfString=9999
$string="This is my KiXtart string"
SUBSTR($string, 9, $EndOfString) ?
------------------
Richard Howarth