From a49b0bc541ddc2401b1b0bf434600f39d43a8204 Mon Sep 17 00:00:00 2001
From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de>
Date: Sun, 4 Jun 2023 15:42:28 +0200
Subject: [PATCH] gribapiDefGridLCC: store DxInMetres/DyInMetres as double (bug
 fix)

---
 ChangeLog            |  4 ++++
 src/stream_gribapi.c | 12 ++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 1a19b3407..9dd478501 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2023-06-04  Uwe Schulzweida
+
+	* gribapiDefGridLCC: store DxInMetres/DyInMetres as double (bug fix)
+
 2023-05-31  Uwe Schulzweida
 
 	* netcdf: filter coordinates variable name zg and zghalf in is_valid_coordinate()
diff --git a/src/stream_gribapi.c b/src/stream_gribapi.c
index d236779b4..ea262dd80 100644
--- a/src/stream_gribapi.c
+++ b/src/stream_gribapi.c
@@ -2258,8 +2258,10 @@ gribapiDefGridLCC(grib_handle *gh, int editionNumber, int gridID, int uvRelative
 
   GRIB_CHECK(my_grib_set_long(gh, "Nx", xsize), 0);
   GRIB_CHECK(my_grib_set_long(gh, "Ny", ysize), 0);
-  GRIB_CHECK(my_grib_set_long(gh, "DxInMetres", lround(fabs(xinc))), 0);
-  GRIB_CHECK(my_grib_set_long(gh, "DyInMetres", lround(fabs(yinc))), 0);
+  // GRIB_CHECK(my_grib_set_long(gh, "DxInMetres", lround(fabs(xinc))), 0);
+  // GRIB_CHECK(my_grib_set_long(gh, "DyInMetres", lround(fabs(yinc))), 0);
+  GRIB_CHECK(my_grib_set_double(gh, "DxInMetres", fabs(xinc)), 0);
+  GRIB_CHECK(my_grib_set_double(gh, "DyInMetres", fabs(yinc)), 0);
   GRIB_CHECK(my_grib_set_double(gh, "longitudeOfFirstGridPointInDegrees", gpp.xval_0), 0);
   GRIB_CHECK(my_grib_set_double(gh, "latitudeOfFirstGridPointInDegrees", gpp.yval_0), 0);
   GRIB_CHECK(my_grib_set_double(gh, "LoVInDegrees", gpp.lon_0), 0);
@@ -2301,8 +2303,10 @@ gribapiDefGridSTERE(grib_handle *gh, int gridID)
 
   GRIB_CHECK(my_grib_set_long(gh, "Nx", xsize), 0);
   GRIB_CHECK(my_grib_set_long(gh, "Ny", ysize), 0);
-  GRIB_CHECK(my_grib_set_long(gh, "DxInMetres", lround(xinc)), 0);
-  GRIB_CHECK(my_grib_set_long(gh, "DyInMetres", lround(yinc)), 0);
+  // GRIB_CHECK(my_grib_set_long(gh, "DxInMetres", lround(xinc)), 0);
+  // GRIB_CHECK(my_grib_set_long(gh, "DyInMetres", lround(yinc)), 0);
+  GRIB_CHECK(my_grib_set_double(gh, "DxInMetres", xinc), 0);
+  GRIB_CHECK(my_grib_set_double(gh, "DyInMetres", yinc), 0);
   GRIB_CHECK(my_grib_set_double(gh, "longitudeOfFirstGridPointInDegrees", gpp.xval_0), 0);
   GRIB_CHECK(my_grib_set_double(gh, "latitudeOfFirstGridPointInDegrees", gpp.yval_0), 0);
   GRIB_CHECK(my_grib_set_double(gh, "LaDInDegrees", gpp.lat_1), 0);
-- 
GitLab