We use Double.MIN_VALUE/Float.MIN_VALUE as the default value for these cases, but that value is not the minimum value: it's just the lowest positive value. We should use -Double.MAX_VALUE instead.