Very useful, thank you!
One suggestion - I had some trouble with rounding errors in the calculation of the start point. This appears ultimately to have been due to a badly-written header value for h.fADCSampleInterval (MCDataTool's problem, not yours!) but I was able to partially solve the problem by changing lines 674/683 from FLOOR commands to ROUND commands. I don't understand the use of FLOOR here, since the values on these lines ought to come out integers (subject to rounding error)...we don't want to FLOOR an index value of 4.99999999 to 4!
Also, line 676 appears to be useless. Due to the FLOOR (or ROUND) operation on 674, STARTPT is already an integer. 676 takes the FLOOR of STARTPT*X/X, which certainly won't fix a rounding error but could introduce one. I have commented 676 out to no detriment.
As a side note, if anybody is using MCDataTool to export to .abf, you may have a problem with the value of h.fADCSampleInterval as written to the header. (This is not the fault of ABFLOAD.) If you believe you may be getting frame shifts when reading an .abf written by MCDataTool, feel free to contact me via the email listed in my profile.