Heh, this must’ve been brought up before, but yeah;
Instead of a single counter for ‘rotten’:
2 counters, 1 for smell 1 for appearance.
Milk
Smell
<2: This smells like milk!
2<days<4: This smells rather sweet.
4<: This smells pretty awful.
Sight
<4: This looks fine!
4<days<7: There are pretty obvious curdles.
7<: This is sludge.
Each level increases chance to be poisoned by a certain amount depending on the food, (milk would be 20% for lvl3 smell, 30% for lvl2 sight & 50% for lvl3 sight).
Include yet another counter almost identical to ‘rotten’, but is instead ‘expired’ for pre-packaged foods only, (cans, bags, cartons). This is to handle foods that wouldn’t be apparently bad unless you open them up & look, and would be part of the item name.
Tons & tons of work, but would be a pretty intuitive & more involved system.