With the onkeydown event, we're dealing with key codes, not character codes. The key codes for the numeric keypad are different from the key codes across the top of the keyboard.
But there is an simple relationship between the two sets, and the way to account for it is to insert a small corrector statement in the typeAhead() function after the line that reads: var charCode = evt.keyCode. Here's the new code to add: