diff --git a/src/epics/util/skeleton.st b/src/epics/util/skeleton.st
index ec32fcdafc8ab0ea9c9445e5ef553f9e27daba3d..d193f19ef8c7503e5c65937ee413663b258d093f 100644
--- a/src/epics/util/skeleton.st
+++ b/src/epics/util/skeleton.st
@@ -575,6 +575,7 @@ state monScreen{
    pvPut(uptime_minute);
 
    festat = pEpics->epicsOutput.fe_status;
+   %% if(festat == -7) strcpy(msgFESTAT,"ADC Timeout - exiting");
    %% if(festat == -6) strcpy(msgFESTAT,"DAC Init Failed - exiting");
    %% if(festat == -5) strcpy(msgFESTAT,"BURT Restore Failed - exiting");
    %% if(festat == -4) strcpy(msgFESTAT,"Channel Hopping detected - exiting");
diff --git a/src/include/controller.h b/src/include/controller.h
index 654fddac947df2181a3e03399c29d6e255a45006..5092c7a568d155e97982e91b121d6ebc3e93bb22 100644
--- a/src/include/controller.h
+++ b/src/include/controller.h
@@ -77,6 +77,7 @@ char fp [64*1024];
 
 
 // fe_state defs
+#define ADC_TO_ERROR		-7
 #define DAC_INIT_ERROR		-6
 #define BURT_RESTORE_ERROR	-5
 #define CHAN_HOP_ERROR		-4
diff --git a/src/include/drv/iop_adc_functions.c b/src/include/drv/iop_adc_functions.c
index d9feafbda602ccd1fec7e8a57c31b121d8224023..9842ddb110195bd0fd25e464202738fc654e9150 100644
--- a/src/include/drv/iop_adc_functions.c
+++ b/src/include/drv/iop_adc_functions.c
@@ -182,6 +182,7 @@ inline int iop_adc_read (adcInfo_t *adcinfo,int cpuClk[])
         if (adcinfo->adcWait >= MAX_ADC_WAIT) {
             pLocalEpics->epicsOutput.stateWord = FE_ERROR_ADC;
             pLocalEpics->epicsOutput.diagWord |= ADC_TIMEOUT_ERR;
+            pLocalEpics->epicsOutput.fe_status = ADC_TO_ERROR;
             stop_working_threads = 1;
             vmeDone = 1;
             // printf("timeout %d %d \n",jj,adcinfo->adcWait);