I misread your message for the comparison you are doing. Indeed the comparison nan /= nan should always return True since they are indeed different and this is what I've observed. I think you were thinking of evaluating 'nan = nan' which is indeed supposed to return False and not True. I've verified that it works fine with VS 2005, but with MSVC++ 6.0 it is going to return True regardless of the option we provide (it does not have /fp, it is /Op instead but it does not change anything). And this is why the melted code behaves incorrectly (since we compile our interpreter with MSVC++ 6.0). Ideally we should compile against VS 2005 on 32-bit, but we unfortunately need 6.0 for backward compatibility.