anchor.diff:      String stringValue = value.toString();
       int intValue = value is double ? value.round() : value;
   
  -    if (whens[stringValue] != null) {
  -      _setAndWatch(whens[stringValue]);
  +    if (discreteRules[stringValue] != null) {
  +      _setAndWatch(discreteRules[stringValue]);
       } else {
         intValue -= offset;
  -      var exp = Function.apply(Intl.plural, [intValue], whensOffset);
  +      var exp = Function.apply(Intl.plural, [intValue], categoryRules);
         if (exp != null) {
           exp = exp.replaceAll(r'{}', (value - offset).toString());
           _setAndWatch(exp);
  
positive.code:   final Scope scope;
    final Interpolate interpolate;
    int offset;
    Map<String, String> whens = new Map();
    Map<Symbol, String> whensOffset = new Map();
    static final RegExp IS_WHEN = new RegExp(r'^when-(minus-)?.');
  
    NgPluralizeDirective(this.scope, this.element, this.interpolate, NodeAttrs attributes) {
  
negative.code: 
      whens.forEach((k, v) {
        if (['zero', 'one', 'two', 'few', 'many', 'other'].contains(k)) {
          this.categoryRules[new Symbol(k.toString())] = v;
        } else {
          this.discreteRules[k.toString()] = v;
        }
      });
    }
  