I just looked into this and I see one possible cause. If the database is on a different server, then this problem could occur if the time on the db server is not in sync with the time on the Web Server. The publish begin date is established in .NET code on the web server using DateTime.UtcNow() but in retrieving modules from the db the current utc time is determined by the db server clock because we are using
AND pm.PublishBeginDate < GetutcDate()
I think it would be better if we pass in the current utctime to this procedure from .NET to keep it consistent. I've put it on my to do list. For now, if it is caused by a time descrepency between servers you can solve it by synchronizing the time/timezone on the 2 machines.
Hope it helps,
Joe