double computeSignupCost (Tariff tariff) { if (tariff.getSignupPayment() < 0.0) { // penalize negative signup fees return tariff.getSignupPayment() * preferredDuration * TimeService.DAY / signupFeePeriod; } else { return tariff.getSignupPayment() * getScaleFactor(); } }
double computeWithdrawCost (Tariff tariff) { if (tariff.getMinDuration() <= minExpirationInterval || 0.0 == tariff.getEarlyWithdrawPayment()) { return 0.0; } double annoyance = 1.0; if (tariff.getEarlyWithdrawPayment() < 0.0) { annoyance = (double)tariff.getMinDuration() / (double)(preferredDuration * TimeService.DAY); } double scale = annoyance * getScaleFactor(); return tariff.getEarlyWithdrawPayment() * scale; }