diff --git a/src/dv/Th/datasrv.c b/src/dv/Th/datasrv.c
index e9a49d03ce20fcf93f1fe7509f57486a12c444a5..ec3c778cf6ad5431c17866bfee2749f90c206356 100644
--- a/src/dv/Th/datasrv.c
+++ b/src/dv/Th/datasrv.c
@@ -5,18 +5,19 @@
 /*----------------------------------------------------------------------*/
 
 
+#include <string.h> /* declarations of strcpy and others.*/
 #include "datasrv.h"
 #include "UTC_GPS/leapsecs.h"
 #include "UTC_GPS/tai.h"
 #include "UTC_GPS/caltime.h"
 #include "math.h"
-#include <string.h> /* Pick up declarations of strcat, strcpy */
 
 struct caltime ctin;
 struct caltime ctout;
 struct gps  gpsTime;
 struct gps gps;
 
+static int debug = 0 ; /* For debugging - JCB */
 
 #define  COMMANDSIZE   2048
 
@@ -37,21 +38,28 @@ daq_channel_t channelAll[MAX_CHANNELS];
 
 short         Fast = 1; /* 1 or 16 */
 
+/* Debug fprintf().  */
 void dfprintf(FILE *file, ...) {}
 
-int DataConnect(char* serverName, int serverPort, int lPort, void* read_data())
+/* int DataConnect(char* serverName, int serverPort, int lPort, void* read_data()) */ /* JCB */
+int DataConnect(char* serverName, int serverPort, int lPort, void* (*read_data)())
 {
-int  j;
+      int  j;
+
+      if (debug != 0) fprintf(stderr, "DataConnect()\n") ; /* JCB */
 
        listenerPort = lPort;
+       if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_initialize()\n") ; /* JCB */
        if (0 == daq_initialize(&DataDaq, &listenerPort, read_data)) {
 	  perror("Couldn't initialize DAQ threads");
 	  return 1;
        }
+       if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_connect()\n") ; /* JCB */
        if ( daq_connect(&DataDaq, serverName, serverPort) ) {
           //perror( "ERROR: Couldn't connect to the NDS server" );
           return 1;
        }
+       if (debug != 0) fprintf(stderr, "DataConnect() - calling daq_recv_channels()\n") ; /* JCB */
        if ( daq_recv_channels(&DataDaq, channelAll, MAX_CHANNELS, &NchannelAll) ) {
           //perror( "ERROR: Failed to receive channel information" );
           return 1;
@@ -64,12 +72,15 @@ int  j;
        /*for ( j = 0; j<NchannelAll; j++ )
 	 fprintf ( stderr, "%s\t%d\n", channelAll[j].name, channelAll[j].rate );*/
        
+       if (debug != 0) fprintf(stderr, "   protocol revision = %d\n", DataDaq.rev) ; /* JCB */
+       if (debug != 0) fprintf(stderr, "DataConnect() - returning\n") ; /* JCB */
+
        return 0;
 }
 
 int DataSimpleConnect(char* serverName, int serverPort)
 {
-int  j;
+      int  j;
 
        if ( daq_connect(&DataDaq, serverName, serverPort) ) {
           //perror( "ERROR: Couldn't connect to the NDS server" );
@@ -87,7 +98,7 @@ int  j;
 
 int DataReConnect(char* serverName, int serverPort)
 {
-int  j;
+      int  j;
 
        daq_disconnect(&DataDaq);
        //sleep(1);
@@ -122,7 +133,7 @@ void DataQuit()
 /* returns total channel number in the list  */
 int DataChanAdd(const char* chName, int dataRate)
 {
-int  index, j;
+      int  index, j;
     
       if ( all == 1 ) 
          return NchannelAll;
@@ -179,7 +190,7 @@ int  index, j;
 /* returns total channel number in the list  */
 int DataChanDelete(const char* chName)
 {
-int  j, pos=-1;
+      int  j, pos=-1;
 
       if ( strcmp(chName, "all") == 0 ) {
          NchanList = 0;
@@ -209,10 +220,10 @@ int  j, pos=-1;
 
 unsigned long DataWriteRealtime()
 {
-unsigned long ID;
-int    j;
-char   temp[COMMANDSIZE];
-int    isend;
+      unsigned long ID;
+      int    j;
+      char   temp[COMMANDSIZE];
+      int    isend;
 
        if ( all < 0 ) {
           perror( "datasrv: DataChanSet failed: no channel selected" );
@@ -262,10 +273,10 @@ int    isend;
 
 unsigned long DataWriteRealtimeFast()
 {
-unsigned long ID;
-int    j;
-char   temp[COMMANDSIZE];
-int    isend;
+      unsigned long ID;
+      int    j;
+      char   temp[COMMANDSIZE];
+      int    isend;
 
        if ( all < 0 ) {
           perror( "datasrv: DataChanSet failed: no channel selected" );
@@ -315,13 +326,13 @@ int    isend;
 
 unsigned long    DataWrite(char* starttime, int duration, int isgps)
 {
-unsigned long ID;
-int    j;
-char   temp[COMMANDSIZE];
+      unsigned long ID;
+      int    j;
+      char   temp[COMMANDSIZE];
 
-long   starttimeInsec, mjd;
-int    yr,mo,da,hr,mn,sc;
-int    isend;
+      long   starttimeInsec, mjd;
+      int    yr,mo,da,hr,mn,sc;
+      int    isend;
      
        if ( isgps == 0 ) { /* UTC time */
 	 sscanf (starttime, "%d-%d-%d-%d-%d-%d", &yr,&mo,&da,&hr,&mn,&sc );
@@ -392,10 +403,10 @@ int    isend;
 
 unsigned long DataWriteTrendRealtime()
 {
-unsigned long ID;
-int    j;
-char   temp[COMMANDSIZE];
-int    isend;
+      unsigned long ID;
+      int    j;
+      char   temp[COMMANDSIZE];
+      int    isend;
 
        if ( all < 0 ) {
           perror( "datasrv: DataChanSet failed: no channel selected" );
@@ -439,14 +450,15 @@ int    isend;
 
 unsigned long    DataWriteTrend(char* starttime, int duration, int trendlength,  int isgps)
 {
-unsigned long ID;
-int    j;
-char   temp[COMMANDSIZE];
+      unsigned long ID;
+      int    j;
+      char   temp[COMMANDSIZE];
 
-long   starttimeInsec, mjd;
-int    yr,mo,da,hr,mn,sc;
-int    isend=0;
+      long   starttimeInsec, mjd;
+      int    yr,mo,da,hr,mn,sc;
+      int    isend=0;
      
+       if (debug != 0) fprintf(stderr, "DataWriteTrend()\n") ; /* JCB */
        if ( all < 0 ) {
           perror( "datasrv: DataChanSet failed: no channel selected" );
           return -1;
@@ -503,6 +515,11 @@ int    isend=0;
        }
        strcat(configure, ";");
        dfprintf ( stderr,"datasrv: configure chan = %s\n", configure );
+       if (debug != 0) 
+       {
+          fprintf(stderr, "DataWriteTrend() - command string = %s\n", configure) ; /* JCB */
+          fprintf(stderr, "DataWriteTrend() - Calling daq_send() \n") ; /* JCB */
+	 }
        isend = daq_send(&DataDaq, configure);
        if ( isend ) 
           fprintf ( stderr, "datasrv: DataWriteTrend failed in daq_send().\n" );
@@ -514,10 +531,13 @@ int    isend=0;
           return -2;
        }
        else if ( isend ) { 
+	  fprintf( stderr, "unknown error returned from daq_send()") ; /* JCB */
           return -2;
        }
 
+      if (debug != 0) fprintf(stderr, "DataWriteTrend() - calling daq_recv_id()\n") ; /* JCB */
       ID = daq_recv_id (&DataDaq);
+      if (debug != 0) fprintf(stderr, "DataWriteTrend() - daq_recv_id() returned %lu\n", ID) ; /* JCB */
       dfprintf ( stderr,"\n" );
       dfprintf ( stderr,"DataWriteTrend ID=%d starttime=%s(%d) duration=%d\n", ID, starttime,starttimeInsec, duration );
       return ID;
@@ -526,10 +546,10 @@ int    isend=0;
 
 void DataWriteStop(unsigned long processID)
 {
-char  tempstring[COMMANDSIZE];
-int   isend;
+      char  tempstring[COMMANDSIZE];
+      int   isend;
 
-       sprintf( tempstring, "kill net-writer %lu;", processID );
+       sprintf( tempstring, "kill net-writer %ld;", processID );
        dfprintf ( stderr,"kill net-writer %d;\n", processID );
        isend = daq_send(&DataDaq, tempstring);
 #if 0
@@ -544,7 +564,7 @@ int   isend;
 
 void DataReadStart()
 {
-unsigned long blocknum;
+      unsigned long blocknum;
 
        if ( !(blocknum = daq_recv_block_num(&DataDaq)) ) {
 	 dfprintf ( stderr, "receiving data on-line %d \n", blocknum );
@@ -788,7 +808,7 @@ int  seconds, secrate;
 		   max = *((float *)( DataDaq.tb->data + pos + sizeof(float)*secrate + j*sizeof(float) ));
 		   *((unsigned int *)&max) = ntohl(*((unsigned int *)&max));
 		   mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(float)*secrate + j*2*sizeof(float) ));
-#ifdef __linux__
+#if defined __linux__ || defined __APPLE__
 		   mean1 = ntohd(mean);
 #else
 		   mean1 = mean;
@@ -837,7 +857,7 @@ int  seconds, secrate;
 			ntohl(*((unsigned int *)( DataDaq.tb->data + pos + sizeof(float)*secrate + j*sizeof(float) )));
 		   (trend+j)->max = max;
 		   mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(float)*secrate + j*2*sizeof(float) ));
-#ifdef __linux__
+#if defined __linux__ || defined __APPLE__
 		   mean1 = ntohd(mean);
 #else
 		   mean1 = mean;
@@ -864,7 +884,7 @@ int  seconds, secrate;
 		   (trend+j)->max = max1;
 		   }
 		   mean = *((double *)( DataDaq.tb->data + pos + 2*sizeof(int)*secrate + j*2*sizeof(int) ));
-#ifdef __linux__
+#if defined __linux__ || defined __APPLE__
 		   ((unsigned long *)&mean1)[1] = ntohl(((unsigned long *)&mean)[0]);
 		   ((unsigned long *)&mean1)[0] = ntohl(((unsigned long *)&mean)[1]);
 #else
@@ -1044,6 +1064,7 @@ long  DataUTCtoGPS(char* utctime)
 long   mjd;
 int    yr,mo,da,hr,mn,sc;
      
+	 if (debug != 0) fprintf(stderr, "DataUTCtoGPS() - utctime = %s\n", utctime) ; /* JCB */
 	 sscanf (utctime, "%d-%d-%d-%d-%d-%d", &yr,&mo,&da,&hr,&mn,&sc );
 	 /*----- enter time in UTC ------------*/
 	 if ( yr == 98 || yr == 99 )
@@ -1056,7 +1077,17 @@ int    yr,mo,da,hr,mn,sc;
 	 ctin.minute     =mn;        /* [0,59] */
 	 ctin.second     =sc;        /* [0,60] */
 	 ctin.offset     =0;         /* offset in minutes from UTC [-5999,5999] */
+	 if (debug != 0) 
+	 {
+	    fprintf(stderr, " ctin.date.month = %d\n", ctin.date.month) ; /* JCB */
+	     fprintf(stderr, " ctin.date.day = %d\n", ctin.date.day) ; /* JCB */
+	     fprintf(stderr, " ctin.hour = %d\n", ctin.hour) ; /* JCB */
+	     fprintf(stderr, " ctin.minute = %d\n", ctin.minute) ; /* JCB */
+	     fprintf(stderr, " ctin.second = %d\n", ctin.second) ; /* JCB */
+	     fprintf(stderr, " ctin.offset = %ld\n", ctin.offset) ; /* JCB */
+	 }
 	 mjd=caldate_mjd(&ctin.date); /* modified Julian day */
+	 fprintf(stderr, " mjd = %ld\n", mjd) ;
 	 utc_to_gps(&ctin,&gps);
 	 return gps.sec;
 }