- if (threshold < 0) wn++;
- if (threshold > 0) { k = threshold; jump MMbyPN; }
-
- if (threshold == 0 || Refers(obj,wn-1) == 0) {
- .NoWordsMatch;
- if (indef_mode ~= 0) {
- k = 0; parser_action = NULL;
- jump MMbyPN;
- }
- rfalse;
+ ! Don't arbitrarily increase wn when ParseNoun() returns -1
+ if (threshold > 0) {
+ k = threshold;
+ wn = j + k;
+ jump MMbyPN;
+ }
+ ! Check wn instead of wn - 1
+ if (threshold == 0 || Refers(obj,wn) == 0) {
+ .NoWordsMatch;
+ if (indef_mode ~= 0) {
+ ! Restore wn to pre-ParseNoun() state
+ k = 0; parser_action = NULL; wn = j;
+ jump MMbyPN;
+ }
+ rfalse;