anchor.diff:              {Smallest, Tree};
           true ->
               StartingAt = Smallest,
  +            %% Here smallest will never be bottom, there's always some data
               Edge = Smallest + (Size - ?MAX_VERSIONS),
               NewTree = gc_tree(StartingAt, Edge, Tree),
               {Edge, NewTree}
  
positive.code:     end;
  
  get_smaller_from_dots(Dots, VC, #clog{data=Tree}) ->
      %% TODO(borja/misc): Can we optimize here? (smallest > VC[Id])
      case catch get_smaller_from_dots(Dots, VC, gb_trees:balance(Tree), pvc_vclock:new()) of
          {found, Max} ->
              Max;
  
negative.code: insert(VC, C=#clog{at=Id, smallest=bottom, data=Tree}) ->
      Key = pvc_vclock:get_time(Id, VC),
      %% If smallest is bottom, set the first time we get to it
      %% IMPORTANT: We assume that the entries will be added in order
      C#clog{smallest=Key, data=gb_trees:insert(Key, VC, Tree)};
  
  insert(VC, C=#clog{at=Id, smallest=Smallest, data=Tree}) ->
  