anchor.diff:                   ], Spec).
   
   add_list_test() ->
  +    setopts([{mag, 3}]),
       Spec0 = new([1, 2]),
       ?assertEqual([{{list, 2},
                      [[{integer, [{{mag, 0}, {1, 1, 1}}]}],
  
positive.code: %% general hierarchical storage for specs
  %%   Spec: spec to modify: [{Key, Value|Subspec}]
  %%   Path: list of key terms specifying spec location
  %%   Fun: arinty 2 merge function to add data to spec
  %%        (false, Data)        -> init_value(Data);
  %%        ({Key, Value}, Data) -> merge_value(Value, Data).
  %%   Data: term to merge into spec
  merge_spec(Spec, [Key], Fun, Data) ->
      %io:format("merge_spec: Spec: ~p  Key: ~p~n", [Spec, Key]),
  
negative.code:     ?assertEqual([{key1, [{key2, 2}, {key3, 1}]}], Spec3).
  
  add_integer_test() ->
      setopts([{mag, 3}]),
      L = [1, 4, 9, 0, -5],
      Spec = lists:foldl(fun add/2, new(), L),
      ?assertEqual([{integer, [{{mag, 0}, {length(L)-1, lists:min(L), lists:max(L)}}]},
                    {{value, 0}, 1}], Spec).
  
  add_float_test() ->
      setopts([{mag, 3}]),
      L = [1.3, 4.12, 9.99, 0.0, -5.31],
      Spec = lists:foldl(fun add/2, new(), L),
      ?assertEqual([{float, [{{mag, 0}, {length(L)-1, lists:min(L), lists:max(L)}}]},
  