Interestingly enough, the MSDN documentation linked to from the answer incorrectly states:
"In this case, the number of characters that are returned is the largest value of either the sum of start_expression and length_expression or 0."
while the knowledgebase article correctly states:
"In cases where the starting position is less than one, the ANSI specified behavior is to return a number of characters equal to the starting position plus length minus 1 (emphasis mine), starting at character position one."
I've commented on the MSDN documentation; hopefully they will correct it soon.