Here's what's happening. The second parameter to
gives the correct answer, and that can be given in of two ways: either as the index of the correct answer, or as the correct answer string itself. In your case, because the answers are themselves numbers, it is ambiguous which of those you mean. There is (as far as I know) no way to distinguish a numeric value from string literal containing that string value, so
can't be distinguished by the MathObejcts library.
It turns out that the correct-answer-as-index is checked first, so in your example, the correct answer is the first one in your array (the one with index 0), namely 2. So to have the correct answer be "0", the third one in the array (which has index 2), you would need to use
2 # index 2 is the correct answer of "0"
It's a bit awkward, but that's how it currently is implemented.
Hope that helps.