anchor.diff:  
         for key in cacheKeyArray do
         begin
  +        bid := fBidsCache[key];
  +
           SaveStream.Write(key.FromP);
           SaveStream.Write(key.ToP);
  -        bid := fBidsCache[key];
           SaveStream.Write(bid.Value);
  -        SaveStream.Write(bid.TimeToLive);
  +        SaveStream.Write(bid.Kind, SizeOf(bid.Kind));
  +        SaveStream.Write(bid.CreatedAt);
         end;
       end;
   
  
positive.code: 
    TKMDeliveryBid = record
      Value: Single;
      TimeToLive: Integer; //Cached bid time to live, we have to update it from time to time
    end;
  
    TKMDeliveryCache = class(TDictionary<TKMDeliveryBidKey, TKMDeliveryBid>)
    public
      function TryGetValue(const aKey: TKMDeliveryBidKey; var aValue: TKMDeliveryBid): Boolean; reintroduce;
      procedure Add(const FromP: TKMPoint; ToP: TKMPoint; const aValue: Single; const aTimeToLive: Word); reintroduce; overload;
      procedure Add(const aKey: TKMDeliveryBidKey; const aValue: Single; const aTimeToLive: Word); reintroduce; overload;
      procedure Add(const aKey: TKMDeliveryBidKey; const aBid: TKMDeliveryBid); reintroduce; overload;
    end;
    {$ENDIF}
  
  
negative.code:   end;
  
    {$IFDEF USE_HASH}
    TKMDeliveryBidKind = (dbkSerfToOffer, dbkOfferToDemand);
  
    //Bids cache key
    TKMDeliveryBidKey = record
      FromP: TKMPoint; //House or Unit UID From where delivery path goes
  