Kerry's right, the client wrote the spec ! Plus to do right, the optional argument need not be used as in substr
now you're getting picky.
... but I'll argue with you.
The function needs to be able to replace any of the lisp routines written for the challenge { though some of them don't meet the spec either
}
The routine I wrote still has some issues,
pass nil as start 2nd param
pass negative number as 2nd or 2rd param
pass anything other than integer as 2nd or 2rd param
pass anything other than a list as the 1st parameter
Other than that and the fact it looks ugly and is slower than most of the alternatives it's pretty good