public override long longValue() { if (System.Double.IsNaN(val)) return 0; if (val == System.Double.PositiveInfinity) return System.Int64.MaxValue; if (val == System.Double.NegativeInfinity) return System.Int64.MinValue; return (long)val; }