improved NaN handling