It's actually working as intended, for the demo above. Most people don't need suggestions for very short words, so the internal settings are fixed to ignore most checks for us, the smaller a word is.
IF wl > LEN(SpellingWord(i)) * .8 AND wl <= LEN(SpellingWord(i)) * 1.2 THEN 'no need to check words too short or too long to generate a positive result
With the above, we eliminate many comparisons automatically with short words. For instance, your typo of
"brwn" is only 4 characters in size (the variable wl for Word Length).
The length of the word "brown" in our dictionary is 5, so it gets kicked out automatically be the IF loop and not offered as a suggestion. (5 * .8 is 4, and with the IF statement IF 4 > 4 turns up FALSE, so we don't compare "Brwn" against any word with 5 or more letters.)
It's just a mechanism to speed up the search process for larger dictionaries, and to eliminate false results so much. Most people can spell the short words, so they often just need them flagged as wrong for the user to correct them.
By tweaking that one line, we can change the tolerance level of how far a range we want to search for word matches. It's a pre-limiter of sorts, which keeps the spellcheck routine from even having to bother to give us a score for words which are way off in sizes...
We can also change the internal setting for what we consider a suitable score to count as a valid suggestions, by altering the line:
IF result <= -80 THEN
As is, we get these suggestions for "brwn", once we remark out that pre-limiter:
brwn -- 12 SUGGESTIONS: brown, BRN, BWR, NbW, WbN, Wbn, Brown, brown, brawn, bwr, nbw, wbn
And, if we change that internal setting to -75, we get a much larger list of words to consider matching against:
brwn -- 66 SUGGESTIONS: brown, bern, bren, bren, bren, NLRB, BRN, BWR, NRAB, NRPB, NSRB, NWLB, SBWR, WRNS, Bran, Bryn, Barn, Brew, Bron, Burn, Byrn, NWbW, NWbn, NbW, WbN, Wbn, Wran, Brown, Bern, Born, Brno, Wren, Nebr, Norw, Bren, brown, warn, worn, born, burn, wren, barn, bran, brawn, brew, brow, braw, bawn, bawr, brin, rawn, birn, bown, bowr, bwr, dBrn, dbrn, narw, nbw, nwbn, nwbw, warb, wbn, wran, wrnt, barn
You can change the tolerance levels to what's suitable for your needs, just by tweaking and playing with those 2 internal lines a bit.
My own word of warning is: The more you relax the "rules" for finding matches amongst short words, the more false matches you'll end up generating for longer ones.