Error in simple mode finding algorithm?
Yes, you are right.  The pseudocode is clumsy, poorly constructed, and confusing.  At the end of the outer loop, modecount holds the number of times that value appears in the array, plus one.  That's weird and not what you'd expect from the variable name: from the variable name, we'd expect it to hold the number of times value appears (without the plus one).

That said, the algorithm still returns the correct answer: it does indeed return a mode, as claimed.  For example, with your example input, it correctly returns 2.

(Why?  Because the exact value of modecount isn't returned.  It's one too high for every value, so the mode will indeed have the largest value of modecount.)

So while the pseudocode is confusing and poorly constructed, it happens to return the right answer -- i.e., it happens to be a correct algorithm for the "find a mode" problem.  But it's still ugly.  Yuck.  I agree with you that they should have initialized the count to 0, not 1; then the algorithm would be both correct and easier to understand.