"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."
This is incorrect. The number of characters returned when start_expression < 1 is the largest value of either (start_expression+length_expression-1) or 0 (e.g, if start_expression is 0 and length_expression is 3, then 2 characters (0+3-1), not 3 characters (0+3) will be returned.)