Handle negative zero values correctly.

This handles the situation when they're part of a global variable
whether it just be a float/double or embedded within a struct.

Fixes #1898.