I guess this has to do with localized and/or non localized date attributes.
Is your date attribute set to localized or to non localized? Because a date without time component is always stored as 12:00 AM UTC. If you have an offset to UTC in one direction, it seems fine. An offset to UTC in the other direction will cause your issue.