anchor.diff:          b_lower(R,<<A/binary,H>>).
    
   %% @doc uppercases all alphabetical characters supported by ISO 8859-15
  --spec binstr_to_higher(binary()) -> binary().
  -binstr_to_higher(Str) when is_binary(Str) ->
  -    b_higher(Str,<<>>).
  -
  -    b_higher(<<>>,A) -> A;
  -    b_higher(<<195,C,R/binary>>,A) when C >= 160, C =<  191 -> 
  +-spec binstr_to_upper(binary()) -> binary().
  +binstr_to_upper(Str) when is_binary(Str) ->
  +    b_upper(Str,<<>>).
  +
  +    b_upper(<<>>,A) -> A;
  +
  +    b_upper(<<195,C,R/binary>>,A) when C >= 160, C =<  182; C >= 184, C =< 190-> % Standard range
           NC = C - 32,
  -        b_higher(R,<<A/binary,195,NC>>);
  -    b_higher(<<C,R/binary>>,A) when C >=  97, C =< 122 -> 
  +        b_upper(R,<<A/binary,195,NC>>);
  +    b_upper(<<197,C,R/binary>>,A) when C =:= 161; C =:= 147; C =:= 190-> % Non-standard range
  +        NC = C - 1,
  +        b_upper(R,<<A/binary,197,NC>>);
  +    b_upper(<<195,C,R/binary>>,A) when C =:= 191-> % Special case CAPITAL LETTER Y WITH DIAERESIS
  +        b_upper(R,<<A/binary,197,184>>);
  +    b_upper(<<C,R/binary>>,A) when C >=  97, C =< 122 -> 
           NC = C - 32,
  -        b_higher(R,<<A/binary,NC>>);
  -    b_higher(<<H,R/binary>>,A) -> 
  -        b_higher(R,<<A/binary,H>>).
  +        b_upper(R,<<A/binary,NC>>);
  +    b_upper(<<H,R/binary>>,A) -> 
  +        b_upper(R,<<A/binary,H>>).
   
   binstr_match_anywhere(Token,Target) when is_binary(Token); is_tuple(Token) ->
       case binary:match(Target,Token) of
  
positive.code: 
           binstr_accentfold/1,
           binstr_to_lower/1,
           binstr_to_higher/1,
  
           binstr_match_anywhere/2,
           binstr_match_sub/4,
  
negative.code:     b_lower(Str,<<>>).
  
      b_lower(<<>>,A) -> A;
      b_lower(<<195,C,R/binary>>,A) when C >= 128, C =<  150; C >= 152, C =< 158-> % Standard range
          NC = C + 32,
          b_lower(R,<<A/binary,195,NC>>);
      b_lower(<<197,C,R/binary>>,A) when C =:= 160; C =:= 146; C =:= 189-> % Non-standard range
          NC = C + 1,
          b_lower(R,<<A/binary,197,NC>>);
      b_lower(<<197,C,R/binary>>,A) when C =:= 184-> % Special case CAPITAL LETTER Y WITH DIAERESIS
          b_lower(R,<<A/binary,195,191>>);
      b_lower(<<C,R/binary>>,A) when C >=  65, C =< 90 -> 
          NC = C + 32,
          b_lower(R,<<A/binary,NC>>);
  