anchor.diff:      lager:debug("Diff: ~p", [Diff]),
       apply_diff(Diff, State0),
       do_reconcile_routes(VIPs1, State0),
  -    State0#state{last_configured_vips = VIPs1}.
  +    State0#state{last_configured_vips = VIPs1, last_received_vips = VIPs0}.
   
   
   %% Returns {VIPsToRemove, VIPsToAdd, [VIP, BackendsToRemove, BackendsToAdd]}
  
positive.code: maintain(cast, {vips, VIPs}, State0) ->
      State1 = maintain(VIPs, State0),
      {keep_state, State1};
  maintain(info, {lashup_gm_route_events, #{ref := Ref, tree := Tree}}, State0 = #state{route_events_ref = Ref}) ->
      State1 = State0#state{tree = Tree},
      {keep_state, State1};
  maintain(info, {lashup_kv_events, Event = #{ref := Ref}}, State0 = #state{kv_ref = Ref}) ->
      State1 = handle_ip_event(Event, State0),
      {keep_state, State1}.
  
negative.code:     VIPs1 = process_reachability(VIPs0, State0),
      Diff = generate_diff(InstalledState, VIPs1),
      apply_diff(Diff, State0),
      State0#state{last_received_vips = VIPs0, last_configured_vips = VIPs1}.
  
  apply_diff({ServicesToAdd, ServicesToRemove, ServicesToModify}, State) ->
      lists:foreach(fun({VIP, _BEs}) -> remove_service(VIP, State) end, ServicesToRemove),
  