Index: src/economy.c =================================================================== --- src/economy.c (revision 7795) +++ src/economy.c (working copy) @@ -1087,29 +1087,24 @@ int32 GetTransportedGoodsIncome(uint num_pieces, uint dist, byte transit_days, CargoID cargo_type) { CargoID cargo = cargo_type; - byte f; + int f; + int days1 = _cargoc.transit_days_1[cargo]; + int days2 = _cargoc.transit_days_2[cargo]; /* zero the distance if it's the bank and very short transport. */ if (_opt.landscape == LT_NORMAL && cargo == CT_VALUABLES && dist < 10) dist = 0; - f = 255; - if (transit_days > _cargoc.transit_days_1[cargo]) { - transit_days -= _cargoc.transit_days_1[cargo]; - f -= transit_days; + if (transit_days <= days1) + f = 255; + else if (transit_days <= days1 + days2) + f = 255 - (transit_days - days1); + else + f = 255 - 2 * (transit_days - days1) + days2; - if (transit_days > _cargoc.transit_days_2[cargo]) { - transit_days -= _cargoc.transit_days_2[cargo]; + if (f < 31) + f = 31; - if (f < transit_days) { - f = 0; - } else { - f -= transit_days; - } - } - } - if (f < 31) f = 31; - return BIGMULSS(dist * f * num_pieces, _cargo_payment_rates[cargo], 21); }