diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 502ba15e52..ae2ba9588c 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -4173,8 +4173,13 @@ void FlowStatMap::FinalizeLocalConsumption(StationID self) for (FlowStatMap::iterator i = this->begin(); i != this->end(); ++i) { FlowStat &fs = i->second; uint local = fs.GetShare(INVALID_STATION); - fs.ChangeShare(self, -local); - fs.ChangeShare(INVALID_STATION, -local); + if (local > INT_MAX) { // make sure it fits in an int + fs.ChangeShare(self, -INT_MAX); + fs.ChangeShare(INVALID_STATION, -INT_MAX); + local -= INT_MAX; + } + fs.ChangeShare(self, (int)-local); + fs.ChangeShare(INVALID_STATION, (int)-local); /* If the local share is used up there must be a share for some * remote station. */