diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl
index ad68c40322977150033e738033b009158bda25dc..06f53ebe9b3532ede142003dff1b5e811975f0fe 100755
--- a/src/epics/util/feCodeGen.pl
+++ b/src/epics/util/feCodeGen.pl
@@ -3614,6 +3614,7 @@ $adcMedm[3] = "$mxpt";
 $adcMedm[6] = "$mypt";
 $adcMedm[15] = "$ii";
 $adcMedm[21] = "$adcCardNum[$ii]\" \n";
+$byteMedm[19] = "\tebit=2 \n";
 if($ii>=$adcCnt)
 {
       if ($dacType[$dacSnum] eq "GSC_18AO8") {
@@ -3621,11 +3622,13 @@ if($ii>=$adcCnt)
 	$dsed_arg .= "s/CHNUM/$dacSnum/g;";
 	$dsed_arg .= "s/CNUM/$dacCardNum[$dacMedm]/g;";
 	system("cat $rcg_src_dir/src/epics/util/DAC_MONITOR_8.adl | sed '$dsed_arg' > $epicsScreensDir/$sysname" . "_DAC_MONITOR_" . $dacSnum . ".adl");
+	$byteMedm[19] = "\tebit=4 \n";
 	} else {
 	$dsed_arg = $sed_arg;
 	$dsed_arg .= "s/CHNUM/$dacSnum/g;";
 	$dsed_arg .= "s/CNUM/$dacCardNum[$dacMedm]/g;";
 	system("cat $rcg_src_dir/src/epics/util/DAC_MONITOR_16.adl | sed '$dsed_arg' > $epicsScreensDir/$sysname" . "_DAC_MONITOR_" . $dacSnum . ".adl");
+	$byteMedm[19] = "\tebit=3 \n";
 	}
 	$adcMedm[14] = "/medm/MEDMDIR/FBID_DAC_MONITOR_";
 	$adcMedm[15] = "$dacSnum";
@@ -3642,18 +3645,17 @@ $byteMedm[6] = "$mbypt";
 $byteMedm[13] = "$ii";
 $byteMedm[18] = "\tsbit=0 \n";
 #$byteMedm[19] = "";
-$byteMedm[19] = "\tebit=2 \n";
 if($ii>=$adcCnt)
 {
 	$byteMedm[12] = "\t\tchan=\"SITE_NAME:SYSTEM_NAME-DCU_NODE_ID_DAC_STAT_";
 	$byteMedm[13] = "$dacMedm";
-	$byteMedm[19] = "\tebit=3 \n";
+	#$byteMedm[19] = "\tebit=3 \n";
 	$byteMedm[8] = "\t\twidth=28 \n";
 	if($modelType ne "MASTER")
 	{
 		$byteMedm[18] = "\tsbit=1 \n";
-		$byteMedm[19] = "\tebit=1 \n";
-		$byteMedm[8] = "\t\twidth=7 \n";
+		$byteMedm[19] = "\tebit=2 \n";
+		$byteMedm[8] = "\t\twidth=14 \n";
 	}
 	$dacMedm ++;
 }
diff --git a/src/fe/controller.c b/src/fe/controller.c
index e9886a4f02660b3d149943e5c0db699cba1c234d..8a234819c7822896b5d92566edc0cf5320ba5a6d 100644
--- a/src/fe/controller.c
+++ b/src/fe/controller.c
@@ -335,6 +335,7 @@ int adcHoldTimeAvg;
 int adcHoldTimeAvgPerSec;
 int usrTime;			// Time spent in user app code
 int usrHoldTime;		// Max time spent in user app code
+int cardCountErr = 0;
 #if defined(SERVO64K)
 unsigned int cycleHist[16];
 unsigned int cycleHistMax[16];
@@ -2127,6 +2128,7 @@ if(clock16K == 17)
 
         if(clock16K == 200)
         {
+	  if(cardCountErr) feStatus |= FE_ERROR_IO;
 		pLocalEpics->epicsOutput.ovAccum = overflowAcc;
 	  for(jj=0;jj<cdsPciModules.adcCount;jj++)
 	  {
@@ -2247,8 +2249,12 @@ if(clock16K == 17)
 			volatile GSA_18BIT_DAC_REG *dac18bitPtr = dacPtr[jj];
 			dacWDread = dac18bitPtr->digital_io_ports;
 			if(((dacWDread >> 8) & 1) > 0)
-			    pLocalEpics->epicsOutput.statDac[jj] &= ~(16);
-			    else pLocalEpics->epicsOutput.statDac[jj] |= 16;
+			    {
+			    	pLocalEpics->epicsOutput.statDac[jj] &= ~(16);
+			    	feStatus |= FE_ERROR_IO;
+			    }
+			    else 
+			    	pLocalEpics->epicsOutput.statDac[jj] |= 16;
 
 		}
 	}
@@ -2701,6 +2707,7 @@ int main(int argc, char **argv)
 					cdsPciModules.cDio6464lCount ++;
 					cdsPciModules.pci_do[kk] = ioMemData->ipc[ii];
 					cdsPciModules.doInstance[kk] = doCnt;
+					status ++;
 				}
 				break;
                         case CON_32DO:
@@ -2750,6 +2757,11 @@ int main(int argc, char **argv)
 	//cdsPciModules.dacCount = ioMemData->dacCount;
 #endif
 	printf("%d PCI cards found \n",status);
+	if(cards != status)
+	{
+		printf(" ERROR **** Did not find correct number of cards! Expected %d and Found %d\n",cards,status);
+		cardCountErr = 1;
+	}
 
 	// Print out all the I/O information
         printf("***************************************************************************\n");