if (argc < 2 || !(std::istringstream(argv[1]) >> real_load))
throw std::invalid_argument("bad or missing initial load parameter");
- double iload = trunc(real_load);
+ double iload = std::trunc(real_load);
if (opt::integer_transfer && real_load != iload) {
XBT_WARN("Initial load %g is not an integer. Truncate it.",
real_load);
{
double load_to_send;
if (opt::bookkeeping) {
- load_to_send = compute_load_to_send(std::min(real_load, nb.get_debt()));
+ double excess_load;
+ if (opt::egocentric)
+ excess_load = std::max(0.0, real_load - expected_load);
+ else
+ excess_load = real_load;
+ load_to_send = compute_load_to_send(std::min(excess_load,
+ nb.get_debt()));
if (load_to_send > 0.0)
nb.set_debt(nb.get_debt() - load_to_send);
} else {