I find your analogy off for your own example. While this can be, indeed, the cause for off-by-one errors, it's not for the copying of strings. That is not caused by forgetting to add one after subtraction, but rather by forgetting to count \0 as a character that has to be stored as well. Still an off by one error, but different analogy.