I was going to demo the ispell completion the other day, and it
 blonked at me... the error happens when there's more than a certain
 number of completions, and in that code, it uses a
 char-to-int/int-to-char conversion... it increments a char var to
 form the keys you push to select which completion you want to use.
 To repeat:  In a `message' buffer, (I think the ispell complete is on 
 by default... or maybe I have it switched on someplace?), type `hel'
 and push `M-Tab'.  It signals an error.  But `hell' `M-Tab' displays
 a choice list in a window at the top of the frame.