anchor.diff:      V.
   
   -spec format_key(K :: field()) -> atom().
  +%% @doc Normalize field values into atoms
   format_key(K) when is_atom(K) ->
       K;
   format_key(K) when is_binary(K) ->
  
positive.code:     end.
  
  %% fr = First Record
  fr(Q,ParamList) ->
      case q(Q,ParamList) of
          [] -> not_found;
  
negative.code:         [First|_] -> First
      end.
  
  -spec fr(Q :: sql()) -> list() | not_found.
  fr(Q) ->
      fr(Q,[]).
  
  -spec fffr(Q :: sql(), ParamList :: [value()]) -> string() | integer() | not_found.
  %% @doc Get First Field of First record
  fffr(Q,ParamList) ->
      case fr(Q,ParamList) of
          not_found -> not_found;
          [First|_] -> First
      end.
  
  -spec fffr(Q :: sql()) -> string() | integer() | not_found.
  fffr(Q) ->
      fffr(Q,[]).
  
  %% First Field List
  -spec ffl(Q :: sql(), ParamList :: [value()]) -> [string() | integer()].
  ffl(Q,ParamList) ->
      [First || [First | _ ] <- db:q(Q,ParamList)].
  
  -spec ffl(Q :: sql()) -> [string() | integer()].
  ffl(Q) ->
      ffl(Q,[]).
  
  -spec table_fields(Table :: table()) -> [atom()].
  %% deprecate this. Use "fields"
  table_fields(Table) when is_atom(Table) ->
      table_fields(atom_to_list(Table));
  table_fields(Table) ->
      [list_to_atom(F) || F <- db:ffl(["describe ",Table])].
  
  -spec fields(Table :: table()) -> [atom()].
  fields(Table) ->
      table_fields(Table).
  
  -spec qexists(Q :: sql()) -> boolean().
  %% @doc Existance query, just returns true if the query Q returns anything
  %% other than an empty set.
  %% TODO: Check for "limit" clause and add? Or rely on user.
  qexists(Q) ->
      qexists(Q,[]).
  
  -spec qexists(Q :: sql(), ParamList :: [value()]) -> boolean().
  qexists(Q,ParamList) ->
      case q(Q,ParamList) of
          [] -> false;
  