anchor.diff:    //Also prefer deliveries near to the serf
     if aSerf <> nil then
       //Serf gets to first house with tpWalkRoad, if not possible, then with tpWalk
  -    Result := TryCalcRouteCost(aSerf.GetPosition, BelowOfferPos, tpWalkRoad, aSerfBidValue, tpWalk);
  +    Result := TryCalcRouteCost(GetSerfActualPos(aSerf), aOfferPos, tpWalkRoad, aSerfBidValue, tpWalk);
   
     {$IFDEF WDC}
     if CACHE_DELIVERY_BIDS then
  
positive.code:   Result := True;
    if aSerf = nil then Exit;
  
    BelowOfferPos := KMPointBelow(aOfferPos);
  
    {$IFDEF WDC}
    if CACHE_DELIVERY_BIDS then
    begin
  
negative.code: var
    LocA, LocB: TKMPoint;
  begin
    LocA := GetSerfActualPos(aSerf);
    LocB := fOffer[iO].Loc_House.PointBelowEntrance;
  
    Result := aSerf.CanWalkTo(LocA, LocB, tpWalk, 0);
  end;
  
  
  function TKMDeliveries.PermitDelivery(iO,iD: Integer; aSerf: TKMUnitSerf): Boolean;
  begin
    Result := ValidDelivery(iO, iD) and SerfCanDoDelivery(iO, iD, aSerf);
  end;
  
  
  function TKMDeliveries.GetSerfActualPos(aSerf: TKMUnit): TKMPoint;
  begin
    Result := aSerf.GetPosition;
  
    //If the serf is inside the house (invisible) test from point below
    if not aSerf.Visible then
      Result := KMPointBelow(Result);
  end;
  
  
  