Jamie,
In your reply to my post you referred to the point that you want to avoid storing data twice. Does that mean you are snowflaking your dimensional model in order to avoid doing that?
The whole purpose of using a star schema is to enable business users with hardly any knowledge of the SQL language to pull out the data they need, and as fast as possible.
Normalizing data for transactional systems is meant to ensure that transactional data can get committed to the system as fast as possible. A dimansional model has a completely different purpose, and therefore requires a completely different approach. Usually whenever I talk to clients who have experience using transactional databases, I'll use the comparison of a transactional system being a racewagon and a dimensional database being a big truck loaded with data. Sure, both are cars, but they serve completely different purposes, and therefore are intrinsically different.
As pointed out, it is far easier to allow end users to figure out relevant questions by storing data redundantly (though by substracting a second, the meaning of the date actually changes from a business perspective, which, hey, is exactly what is intended), than to insist joining a potentially huge table with itself. Sure we store a piece of data "twice", but we do it knowing fully well that the purpose of this "bad behaviour" is in order to allow ease of use, and performance in pulling out the data.
Just my 2 cents.