diff --git a/ChangeLog b/ChangeLog
index b16083579369f9e01322f6d1ae7057cb8e16ec9f..5595a022a8799ac48d9991311cff8a9b2083d067 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2024-03-22 Uwe Schulzweida
+
+	* gribapi_get_timeunits: check unitsOfTime (bug fix) [report: Chris Barnard]
+
 2024-03-20 Uwe Schulzweida
 
 	* calc_chunk_cache_size:  improve for 4D chunked data
diff --git a/src/stream_gribapi.c b/src/stream_gribapi.c
index 0b3ac8a7e818cdf2318fe07d3c0859ceb7050a1b..e13553a322ebf3ccc43595686cb71f62827c295b 100644
--- a/src/stream_gribapi.c
+++ b/src/stream_gribapi.c
@@ -87,8 +87,14 @@ gribapi_get_timeunits(grib_handle *gh)
 {
   long unitsOfTime = -1;
   grib_get_long(gh, "indicatorOfUnitOfTimeRange", &unitsOfTime);
+  if (unitsOfTime == -1) grib_get_long(gh, "indicatorOfUnitForTimeIncrement", &unitsOfTime);
 
-  GRIB_CHECK(my_grib_set_long(gh, "stepUnits", unitsOfTime), 0);
+  if (unitsOfTime != -1)
+    {
+      long stepUnits = -1;
+      grib_get_long(gh, "stepUnits", &stepUnits);
+      if (stepUnits == -1 && stepUnits != unitsOfTime) GRIB_CHECK(my_grib_set_long(gh, "stepUnits", unitsOfTime), 0);
+    }
 
   return get_timeunits(unitsOfTime);
 }
@@ -114,7 +120,7 @@ gribapiGetSteps(grib_handle *gh, int timeunits, int *startStep, int *endStep)
   *endStep = *startStep;
   status = grib_get_long(gh, "endStep", &lpar);
   if (status == 0) *endStep = (int) (((double) lpar * timeunits_factor(timeunits, timeunits2)) + 0.5);
-  // printf("%d %d %d %d %d %g\n", *startStep, *endStep, lpar, timeunits, timeunits2, timeunits_factor(timeunits, timeunits2));
+  // printf("%d %d %ld %d %d %g\n", *startStep, *endStep, lpar, timeunits, timeunits2, timeunits_factor(timeunits, timeunits2));
 }
 
 static CdiDateTime