diff --git a/src/epics/util/feCodeGen.pl b/src/epics/util/feCodeGen.pl
index 556377283e438116f3ca70db2fe5f56352576472..ba42facac11a02a75feb2f9ecb02d5a0be941da2 100755
--- a/src/epics/util/feCodeGen.pl
+++ b/src/epics/util/feCodeGen.pl
@@ -1711,7 +1711,8 @@ END
 	#//			- All IPCx data receives are to occur first in the processing loop
 	#
 	if ($ipcxCnt > 0 ) {
-	   print OUT "\ncommData3Receive(myIpcCount, ipcInfo, timeSec , cycle);\n\n";
+	   #print OUT "\ncommData3Receive(myIpcCount, ipcInfo, timeSec , cycle);\n\n";
+	   print OUT "\nif((cycle % UNDERSAMPLE) == 0)commData3Receive(myIpcCount, ipcInfo, timeSec , (cycle / UNDERSAMPLE));\n\n";
 	}
 	# END IPCx PART CODE
 
@@ -1814,7 +1815,8 @@ print OUT "$feTailCode";
 #
 if ($ipcxCnt > 0) {
    print OUT "      if(!cycle && pLocalEpics->epicsInput.ipcDiagReset) pLocalEpics->epicsInput.ipcDiagReset = 0;\n";
-   print OUT "\n    commData3Send(myIpcCount, ipcInfo, timeSec, cycle);\n\n";
+   #print OUT "\n    commData3Send(myIpcCount, ipcInfo, timeSec, cycle);\n\n";
+   print OUT "\n    if((cycle % UNDERSAMPLE) == 0) commData3Send(myIpcCount, ipcInfo, timeSec, (cycle / UNDERSAMPLE));\n\n";
 }
 # END IPCx PART CODE
 
diff --git a/src/epics/util/lib/IPCx.pm b/src/epics/util/lib/IPCx.pm
index 3500891543f3780fca646eb2c89f351f67a6c3f6..25f501b342b07c114df4378099f9f0c77d0fa410 100644
--- a/src/epics/util/lib/IPCx.pm
+++ b/src/epics/util/lib/IPCx.pm
@@ -169,7 +169,7 @@ sub frontEndInitCode {
 
 	# Need to call commData3.c during initialization only once.
         if ($::ipcxInitDone eq $::ipcxCnt) {
-           $calcExp .= "\ncommData3Init(myIpcCount, FE_RATE, ipcInfo);\n\n";
+           $calcExp .= "\ncommData3Init(myIpcCount, IPC_RATE, ipcInfo);\n\n";
         }
         return $calcExp;
 }