I have a few dupes with a normal schedule: 2-3 slots downtime, 3 slots sleep, 1 slot bathroom and the rest work. For them I have a great hall, which contains a water cooler for socialization. The issue is, the dupes only use it every other day, because the moral bonus lasts a little bit more than a cycle. Therefore if a dupe socialized the day before, the bonus is still active and it does not use the water cooler to "refresh" the bonus. During the night, the bonus runs out and for this day the moral value is lower than the previous day.
First I thought this might be an issue of my scheduele and extended the downtime. But the dupes wouldn't socialize even if everything else (like toilet, food, shower) is done. They just staying around. An example of my first dupe:
0 - 1: bathroom
1 - 18: work
18 - 21: downtime
21 - 24: sleep
If the dupe does not have the socialize bonus, it earns it most of the time at about 20 o'clock. The next day at 20 o'clock, this bonus is still active. In the night, the dupe loses the bonus at about 0 o'clock. With such a mechanic, this is not a reliable source for the moral bonus.
Based on the timings, the bonus holds for about 1.1 cycles. My proposal is to let the dupes allow socialization again if the bonus will be hold for a duration shorter than e.g. 0.2 cycles. With such a setting, the time, in which this bonus can be refreshed should be long enough.