anchor.diff:      trim_left_func(S, fun(C) -> C == Char end).
   
   
  -trim_left_func(<<Char, Rest/binary>> = Bin, F) ->
  +trim_left_func(<<Char/utf8, Rest/binary>> = Bin, F) ->
       case F(Char) of
           true -> trim_left_func(Rest, F);
           false -> Bin
  
positive.code: %% @doc Remove whitespace at the start and end of the string
  -spec trim(binary()|list()) -> binary()|list().
  trim(B) when is_binary(B) ->
  	trim_right(trim_left(B));
  trim(L) when is_list(L) ->
  	binary_to_list(trim(iolist_to_binary(L))).
  
  %% @doc Remove all occurences of a character at the start and end of a string.
  -spec trim(binary()|list(), integer()) -> binary()|list().
  trim(B, Char) when is_binary(B) ->
  	trim_right(trim_left(B, Char), Char);
  trim(L, Char) when is_list(L) ->
  	binary_to_list(trim(iolist_to_binary(L), Char)).
  
  
  %% @doc Remove whitespace at the start the string
  
negative.code: to_lower(B) when is_binary(B) ->
      to_lower(B,<<>>);
  to_lower(undefined) ->
      <<>>;
  to_lower(A) when is_atom(A) ->
      to_lower(z_convert:to_binary(A));
  to_lower(L) when is_list(L) ->
      to_lower(iolist_to_binary(L)).
  
  to_lower(<<>>, Acc) ->
      Acc;
  to_lower(<<H,T/binary>>, Acc) when H >= $A andalso H =< $Z ->
      H1 = H + 32,
      to_lower(T,<<Acc/binary,H1>>); 
  to_lower(<<H,T/binary>>, Acc) when H < 128 ->
      to_lower(T,<<Acc/binary,H>>); 
  to_lower(<<"Å"/utf8,T/binary>>, Acc) -> to_lower(T, <<Acc/binary,195,165>>);
  to_lower(<<"Ä"/utf8,T/binary>>, Acc) -> to_lower(T, <<Acc/binary,195,164>>);
  to_lower(<<"Á"/utf8,T/binary>>, Acc) -> to_lower(T, <<Acc/binary,195,161>>);
  