Besides the fact that the upkeep values are broken, I'm missing an important feature. There should be a way to hold a specific rank of your town. Right now you automatically increase the rank if you pay the upkeep and drop if you don't. The only other limit is the number of people in your town.
In the future, when city rank unlocks new buildings and other stuff a major should be able to choose if the city ranks up or not. If the next rank brings advantages that the city doesn't need yet, they stay on the actual rank.
One way to do that is with the gold upkeep. A city has to pay for the cereal and protein sacks every day. And if a city wants to rank up on the other day, the city has to pay a larger amount of gold. So, instead of paying gold every day and generate outstanding gold debt if you don't, the city pays no or just very little gold every day but a larger amount if the city wants to rank up.
This leads to a controlled city rank, where the mayor actively choose which rank the city should have.