diff --git a/src/gribapi_utilities.c b/src/gribapi_utilities.c
index a67d4346169f3fbfc92c40a45e39d64ca34e9264..eabd1d1f613ba60d74399aff37f1ae46287ea11c 100644
--- a/src/gribapi_utilities.c
+++ b/src/gribapi_utilities.c
@@ -471,27 +471,24 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
     case GRID_LONLAT:
     case GRID_GAUSSIAN:
       {
-        long lpar;
-        FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Ni", &lpar);
-        /* FIXME: assert(lpar <= INT_MAX && lpar >= INT_MIN) */
-        int nlon = (int)lpar;
-        FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Nj", &lpar);
-        /* FIXME: assert(lpar <= INT_MAX && lpar >= INT_MIN) */
-        int nlat = (int)lpar;
+        long nlon, nlat;
+        FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Ni", &nlon);
+        FAIL_ON_GRIB_ERROR(grib_get_long, gh, "Nj", &nlat);
 
         if ( gridtype == GRID_GAUSSIAN )
           {
+            long lpar;
             FAIL_ON_GRIB_ERROR(grib_get_long, gh, "numberOfParallelsBetweenAPoleAndTheEquator", &lpar);
             grid->np = (int)lpar;
           }
 
         if ( numberOfPoints != nlon*nlat )
-          Error("numberOfPoints (%ld) and gridSize (%d) differ!", numberOfPoints, nlon*nlat);
+          Error("numberOfPoints (%ld) and gridSize (%ld) differ!", numberOfPoints, nlon*nlat);
 
         /* FIXME: assert(numberOfPoints <= INT_MAX && numberOfPoints >= INT_MIN) */
         grid->size  = (int)numberOfPoints;
-        grid->xsize = nlon;
-        grid->ysize = nlat;
+        grid->xsize = (int)nlon;
+        grid->ysize = (int)nlat;
         grid->xinc  = 0;
         grid->yinc  = 0;
         grid->xdef  = 0;
@@ -507,6 +504,8 @@ void gribapiGetGrid(grib_handle *gh, grid_t *grid)
         if ( grid->xinc < -999 || grid->xinc > 999 ) grid->xinc = 0;
         if ( grid->yinc < -999 || grid->yinc > 999 ) grid->yinc = 0;
 
+        if ( grid->yinc > 0 && grid->yfirst > grid->ylast ) grid->yinc = -grid->yinc;
+
         /* if ( IS_NOT_EQUAL(grid->xfirst, 0) || IS_NOT_EQUAL(grid->xlast, 0) ) */
           {
             if ( grid->xsize > 1 )