I was just encountering a bug where assignment of a DWORD var wasn't working right.
I was converting a float directly to a DWORD during the assignment. It worked most of the time, but every now and then it didn't.
I'm not completely sure what causes this problem, but I'm guessing it has to do with the byte alignment of the var in the memory.
So, just wanted to say... always convert your floats into longs before converting them to DWORDs, and convert your doubles to long-longs before converting them to QWORDs.