diff --git a/src/stream_srv.c b/src/stream_srv.c
index 177f2ec93a9569f251eb2f4ca3da267618aacf38..c46b8233b7719e0aabac920bc66ec4f426fc41cd 100644
--- a/src/stream_srv.c
+++ b/src/stream_srv.c
@@ -9,7 +9,6 @@
 #include "cdi.h"
 #include "cdi_int.h"
 #include "varscan.h"
-#include "cmp_datetime.h"
 #include "service.h"
 #include "stream_scan.h"
 #include "stream_srv.h"
@@ -249,7 +248,8 @@ srv_add_record(stream_t *streamptr, int param, int level, size_t xsize, size_t y
 static void
 srvScanTimestep1(stream_t *streamptr)
 {
-  CmpDateTime datetime0 = { INT_MIN, INT_MIN };
+  CdiDateTime datetime0;
+  cdiDateTime_init(&datetime0);
   off_t recpos;
   srvrec_t *srvp = (srvrec_t *) streamptr->record->objectp;
 
@@ -284,12 +284,12 @@ srvScanTimestep1(stream_t *streamptr)
       const int rxsize = header[4];
       const int rysize = header[5];
       const int param = cdiEncodeParam(rcode, 255, 255);
-      const CmpDateTime datetime = { .date = vdate, .time = vtime };
+      const CdiDateTime datetime = cdiDateTime_set(vdate, vtime);
 
       if (nrecs == 0)
         {
           datetime0 = datetime;
-          taxis->vdatetime = cdiDateTime_set(vdate, vtime);
+          taxis->vdatetime = datetime;
         }
       else
         {
@@ -297,7 +297,7 @@ srvScanTimestep1(stream_t *streamptr)
           for (int recID = 0; recID < nrecs; recID++)
             if (param == records[recID].param && rlevel == records[recID].ilevel) goto tstepScanLoopFinished;
 
-          if (datetime_differ(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
+          if (cdiDateTime_isNE(datetime, datetime0)) Warning("Inconsistent verification time for code %d level %d", rcode, rlevel);
         }
 
       nrecs++;
@@ -605,6 +605,7 @@ srvWriteVarSliceDP(stream_t *streamptr, int varID, int levID, const double *data
   const int vlistID = streamptr->vlistID;
   const int fileID = streamptr->fileID;
   const int tsID = streamptr->curTsID;
+  const CdiDateTime vDateTime = streamptr->tsteps[tsID].taxis.vdatetime;
   const int gridID = vlistInqVarGrid(vlistID, varID);
 
   int pdis, pcat, pnum;
@@ -613,8 +614,8 @@ srvWriteVarSliceDP(stream_t *streamptr, int varID, int levID, const double *data
   int header[8];
   header[0] = pnum;
   header[1] = (int) lround(zaxisInqLevel(vlistInqVarZaxis(vlistID, varID), levID));
-  header[2] = (int) cdiDate_get(streamptr->tsteps[tsID].taxis.vdatetime.date);
-  header[3] = cdiTime_get(streamptr->tsteps[tsID].taxis.vdatetime.time);
+  header[2] = (int) cdiDate_get(vDateTime.date);
+  header[3] = cdiTime_get(vDateTime.time);
 
   size_t xsize = gridInqXsize(gridID);
   size_t ysize = gridInqYsize(gridID);