As seen below, having food stored over 2.1mil kcal gives a negative value in the upper left display, but shows properly in the Edible list on the right. The upper left shows that number always if the total edible calories exceeds 2.1 mil kcal, i.e. it doesn't change as the number continues to increase above that. Given the number in the upper left is the minimum in a signed 32-bit integer and stays that way regardless of how, I'd assume the number is stored is being converted to a 32-bit number for display in the upper left, instead of as a signed 64-bit.
Produce food in excess of 2.1 mil kcal. Upper left display of kcal available will become fixed at -2^31 as long as kcal > than some limit (guessing 2^31-1). Updates correctly when food drops below limit, and shows negative number again if above limit.