diff --git a/src/grib_accessor_class_g2end_step.cc b/src/grib_accessor_class_g2end_step.cc index d6e1caa49..beaf00776 100644 --- a/src/grib_accessor_class_g2end_step.cc +++ b/src/grib_accessor_class_g2end_step.cc @@ -744,14 +744,15 @@ static int pack_string(grib_accessor* a, const char* val, size_t* len) static int get_native_type(grib_accessor* a) { - // TODO: Still experimental. - // Change the type to depend on the stepUnits for backward compatibility - grib_handle* h = grib_handle_of_accessor(a); - long step_units = 0; - if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { - if (step_units == 1) { - return GRIB_TYPE_LONG; + int show_hours = a->context->show_hour_stepunit; + + if (!show_hours) { + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { + return GRIB_TYPE_LONG; + } } } diff --git a/src/grib_accessor_class_step_in_units.cc b/src/grib_accessor_class_step_in_units.cc index 4b516e518..9323ec115 100644 --- a/src/grib_accessor_class_step_in_units.cc +++ b/src/grib_accessor_class_step_in_units.cc @@ -349,16 +349,16 @@ static int unpack_string(grib_accessor* a, char* val, size_t* len) static int get_native_type(grib_accessor* a) { - // TODO: Still experimental. - // Change the type to depend on the stepUnits for backward compatibility - grib_handle* h = grib_handle_of_accessor(a); - long step_units = 0; - if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { - if (step_units == 1) { - return GRIB_TYPE_LONG; + int show_hours = a->context->show_hour_stepunit; + + if (!show_hours) { + long step_units = 0; + if (grib_get_long_internal(h, "stepUnits", &step_units) == GRIB_SUCCESS) { + if (eccodes::Unit{step_units} == eccodes::Unit::Value::HOUR) { + return GRIB_TYPE_LONG; + } } } - return GRIB_TYPE_STRING; }