According to the documentation for the Core Foundation function CFNumberCompare http://developer.apple.com/documentation/CoreFoundation/Reference/CFNumberRef/Reference/reference.html#//apple_ref/doc/uid/20001209-CH201-F11054 "Negative 0 compares less than positive 0." This violates the IEEE 754-1985 standard for binary floating-point arithmetic. It's also incredibly stupid and could lead to unexpected behavior in applications. For (free) reference, see "What Every Computer Scientist Should Know About Floating-Point Arithmetic", page 201 http://www.validlab.com/goldberg/paper.ps Moreover, the CFNumberCompare behavior with negative zero is inconsistent, because it returns kCFCompareLessThan for floating point zeros but kCFCompareEqualTo for integer zeros. This is because the binary representations of integer zero and negative zero are identical, unlike the binary representations of floating point zero and negative zero. It is ironic that http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFPropertyLists/Articles/Numbers.html#//apple_ref/doc/uid/20001173 says, "When comparing CFNumber objects, conversion and comparison follow human expectations and not C promotion and comparison rules. Negative zero compares less than positive zero." This is in fact completely *contrary* to human expectations and mathematical practice.