private boolean isLastAuction(Quote quote) {
    int auction = quote.getAuction();
    int category = getAuctionCategory(auction);
    long serverTime, quoteTime;
    if (category == CAT_ENTERTAINMENT) {
      return auction == MAX_ENTERTAINMENT;
    } else if (category == CAT_FLIGHT) {
      return auction == MAX_FLIGHT;
    } else if (!quote.isAuctionClosed() &&
	       (quoteTime = quote.getNextQuoteTime()) > 0 &&
	       (serverTime = getServerTime()) > quoteTime) {
      lastHotelAuction = auction;
      log.fine("rerequesting hotel quote for auction " + auction);
      TimeDispatcher.getDefault()
	.addTask(serverTime + 1000, quote, connection, this);
      return false;
    } else {
      return auction == lastHotelAuction;
    }
  }