diff --git a/src/cdi.h b/src/cdi.h
index 4aaa6e59d0097e73830bb298a5fce13ad4f0cb6a..d3008995b47f5eacc5e8233c4271131379c8ef82 100644
--- a/src/cdi.h
+++ b/src/cdi.h
@@ -1175,18 +1175,6 @@ int     taxisInqRdate(int taxisID);
 //      taxisInqRtime: Get the reference time
 int     taxisInqRtime(int taxisID);
 
-//      taxisDefFdate: Define the forecast reference date
-void    taxisDefFdate(int taxisID, int date);
-
-//      taxisDefFtime: Define the forecast reference time
-void    taxisDefFtime(int taxisID, int time);
-
-//      taxisInqFdate: Get the forecast reference date
-int     taxisInqFdate(int taxisID);
-
-//      taxisInqFtime: Get the forecast reference time
-int     taxisInqFtime(int taxisID);
-
 int     taxisHasBounds(int taxisID);
 void    taxisWithBounds(int taxisID);
 
@@ -1344,11 +1332,17 @@ int streamOpenReadQuery(const char *path, const CdiQuery *query);
 
 #include "cdi_datetime.h"
 
+// taxisDefRdatetime: Define the reference date/time
 void taxisDefRdatetime(int taxisID, CdiDateTime rDateTime);
+// taxisInqRdatetime: Get the reference date/time
 CdiDateTime taxisInqRdatetime(int taxisID);
+// taxisDefFdatetime: Define the forecast reference date/time
 void taxisDefFdatetime(int taxisID, CdiDateTime fDateTime);
+// taxisInqFdatetime: Get the forecast reference date/time
 CdiDateTime taxisInqFdatetime(int taxisID);
+// taxisDefVdatetime: Define the verification date/time
 void taxisDefVdatetime(int taxisID, CdiDateTime vDateTime);
+// taxisInqVdatetime: Get the verification date/time
 CdiDateTime taxisInqVdatetime(int taxisID);
 void taxisDefVdatetimeBounds(int taxisID, CdiDateTime vDateTime_lb, CdiDateTime vDateTime_ub);
 void taxisInqVdatetimeBounds(int taxisID, CdiDateTime *vDateTime_lb, CdiDateTime *vDateTime_ub);
diff --git a/src/taxis.c b/src/taxis.c
index 205b2b0bded10392caa0a7cdd6f5d5afff2f8c40..77f8eb700ac2521b0dd32c91fb58630ff5754bde 100644
--- a/src/taxis.c
+++ b/src/taxis.c
@@ -79,7 +79,7 @@ taxisNamePtr(int taxisID)
 const char *
 tunitNamePtr(int unitID)
 {
-  int size = sizeof(Timeunits) / sizeof(*Timeunits);
+  const int size = sizeof(Timeunits) / sizeof(*Timeunits);
   return (unitID > 0 && unitID < size) ? Timeunits[unitID] : Timeunits[0];
 }
 static void
@@ -128,9 +128,7 @@ static void
 taxisInit(void)
 {
   static bool taxisInitialized = false;
-
   if (taxisInitialized) return;
-
   taxisInitialized = true;
 
   char *env = getenv("TAXIS_DEBUG");
@@ -398,53 +396,27 @@ taxisDefRtime(int taxisID, int rtime)
 }
 
 /*
-@Function  taxisDefFdate
-@Title     Define the forecast reference date
+@Function  taxisDefFdatetime
+@Title     Define the forecast reference date/time
 
-@Prototype void taxisDefFdate(int taxisID, int fdate)
+@Prototype void taxisDefFdatetime(int taxisID, CdiDateTime fDateTime)
 @Parameter
-    @Item  taxisID  Time axis ID, from a previous call to @fref{taxisCreate}
-    @Item  fdate    Forecast reference date (YYYYMMDD)
+    @Item  taxisID    Time axis ID, from a previous call to @fref{taxisCreate}
+    @Item  fDateTime  Forecast reference date/time
 
 @Description
-The function @func{taxisDefFdate} defines the forecast reference date of a Time axis.
+The function @func{taxisDefFdatetime} defines the forecast reference date/time of a Time axis.
 
 @EndFunction
 */
 void
-taxisDefFdate(int taxisID, int fdate)
+taxisDefFdatetime(int taxisID, CdiDateTime fDateTime)
 {
   taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
 
-  if (cdiDate_get(taxisptr->fDateTime.date) != fdate)
+  if (cdiDateTime_isNE(taxisptr->fDateTime, fDateTime))
     {
-      taxisptr->fDateTime.date = cdiDate_set(fdate);
-      reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
-    }
-}
-
-/*
-@Function  taxisDefFtime
-@Title     Define the forecast reference time
-
-@Prototype void taxisDefFtime(int taxisID, int ftime)
-@Parameter
-    @Item  taxisID  Time axis ID, from a previous call to @fref{taxisCreate}
-    @Item  ftime    Forecast reference time (hhmmss)
-
-@Description
-The function @func{taxisDefFtime} defines the forecast reference time of a Time axis.
-
-@EndFunction
-*/
-void
-taxisDefFtime(int taxisID, int ftime)
-{
-  taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
-
-  if (cdiTime_get(taxisptr->fDateTime.time) != ftime)
-    {
-      taxisptr->fDateTime.time = cdiTime_set(ftime);
+      taxisptr->fDateTime = fDateTime;
       reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 }
@@ -619,20 +591,6 @@ taxisInqRdatetime(int taxisID)
   return taxisptr->rDateTime;
 }
 
-CdiDateTime
-taxisInqFdatetime(int taxisID)
-{
-  taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
-
-  if (cdiDateTime_isNull(taxisptr->fDateTime))
-    {
-      taxisptr->fDateTime = taxisInqRdatetime(taxisID);
-      reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
-    }
-
-  return taxisptr->rDateTime;
-}
-
 /*
 @Function  taxisInqVdate
 @Title     Get the verification date
@@ -816,53 +774,23 @@ taxisInqRtime(int taxisID)
 }
 
 /*
-@Function  taxisInqFdate
-@Title     Get the forecast reference date
+@Function  taxisInqFdatetime
+@Title     Get the forecast reference date/time
 
-@Prototype int taxisInqFdate(int taxisID)
+@Prototype int taxisInqFdatetime(int taxisID)
 @Parameter
     @Item  taxisID  Time axis ID, from a previous call to @fref{taxisCreate} or @fref{vlistInqTaxis}
 
 @Description
-The function @func{taxisInqFdate} returns the forecast reference date of a Time axis.
+The function @func{taxisInqFdatetime} returns the forecast reference date/time of a Time axis.
 
 @Result
-@func{taxisInqFdate} returns the forecast reference date.
+@func{taxisInqFdate} returns the forecast reference date/time.
 
 @EndFunction
 */
-int
-taxisInqFdate(int taxisID)
-{
-  taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
-
-  if (cdiDateTime_isNull(taxisptr->fDateTime))
-    {
-      // rDateTime is initialized from vDateTime if empty!
-      taxisptr->fDateTime = taxisInqRdatetime(taxisID);
-    }
-
-  return cdiDate_get(taxisptr->fDateTime.date);
-}
-
-/*
-@Function  taxisInqFtime
-@Title     Get the forecast reference time
-
-@Prototype int taxisInqFtime(int taxisID)
-@Parameter
-    @Item  taxisID  Time axis ID, from a previous call to @fref{taxisCreate} or @fref{vlistInqTaxis}
-
-@Description
-The function @func{taxisInqFtime} returns the forecast reference time of a Time axis.
-
-@Result
-@func{taxisInqFtime} returns the forecast reference time.
-
-@EndFunction
-*/
-int
-taxisInqFtime(int taxisID)
+CdiDateTime
+taxisInqFdatetime(int taxisID)
 {
   taxis_t *taxisptr = (taxis_t *) reshGetVal(taxisID, &taxisOps);
 
@@ -870,9 +798,10 @@ taxisInqFtime(int taxisID)
     {
       // rDateTime is initialized from vDateTime if empty!
       taxisptr->fDateTime = taxisInqRdatetime(taxisID);
+      reshSetStatus(taxisID, &taxisOps, RESH_DESYNC_IN_USE);
     }
 
-  return cdiTime_get(taxisptr->fDateTime.time);
+  return taxisptr->fDateTime;
 }
 
 /*