fix negative zero handling