diff --git a/sis8300bcmApp/src/sis8300bcm.cpp b/sis8300bcmApp/src/sis8300bcm.cpp
index cab2bc3ed44925482a85622346173701a50e3188..7c791fb7413e3734c3237ed1ac151a31a889f497 100644
--- a/sis8300bcmApp/src/sis8300bcm.cpp
+++ b/sis8300bcmApp/src/sis8300bcm.cpp
@@ -1123,55 +1123,6 @@ int sis8300bcm::readbackParameters()
         setIntegerParam(addr, BCMProbeChannel, uintValue % 10);
     }
 
-    // readback FIBER parameters
-    for (int addr = 0; addr < SIS8300BCM_NUM_FIBER_CHANNELS; addr++) {
-        asynPrintDeviceInfo(pasynUserSelf, "readback FIBER %d parameters", addr);
-
-        ret = sis8300drvbcm_get_fiber_out_data_select(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_out_data_select returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberOutDataSelect, uintValue);
-        ret = sis8300drvbcm_get_fiber_out_data_enable(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_out_data_enable returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberOutDataEnable, uintValue);
-        ret = sis8300drvbcm_get_fiber_sfp_present(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_sfp_present returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberSFPPresent, uintValue);
-        ret = sis8300drvbcm_get_fiber_lane_up(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_lane_up returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberLaneUp, uintValue);
-        ret = sis8300drvbcm_get_fiber_channel_up(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_channel_up returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberChannelUp, uintValue);
-        ret = sis8300drvbcm_get_fiber_hardware_error(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_hardware_error returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberHardwareError, uintValue);
-        ret = sis8300drvbcm_get_fiber_software_error(mDeviceHandle, addr, &uintValue);
-        if (ret) {
-            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_software_error returned %d", ret);
-            return ret;
-        }
-        setIntegerParam(addr, BCMFiberSoftwareError, uintValue);
-
-    }
-
     callParamCallbacks();
 
     return ret;
@@ -1414,6 +1365,54 @@ int sis8300bcm::deviceDone()
         setIntegerParam(addr, BCMDiffAlarmLeakyDirect, (uintValue & 0x08) ? 1 : 0);
     }
 
+    // readback FIBER parameters
+    for (int addr = 0; addr < SIS8300BCM_NUM_FIBER_CHANNELS; addr++) {
+        asynPrintDeviceInfo(pasynUserSelf, "readback FIBER %d parameters", addr);
+
+        ret = sis8300drvbcm_get_fiber_out_data_select(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_out_data_select returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberOutDataSelect, uintValue);
+        ret = sis8300drvbcm_get_fiber_out_data_enable(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_out_data_enable returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberOutDataEnable, uintValue);
+        ret = sis8300drvbcm_get_fiber_sfp_present(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_sfp_present returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberSFPPresent, uintValue);
+        ret = sis8300drvbcm_get_fiber_lane_up(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_lane_up returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberLaneUp, uintValue);
+        ret = sis8300drvbcm_get_fiber_channel_up(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_channel_up returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberChannelUp, uintValue);
+        ret = sis8300drvbcm_get_fiber_hardware_error(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_hardware_error returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberHardwareError, uintValue);
+        ret = sis8300drvbcm_get_fiber_software_error(mDeviceHandle, addr, &uintValue);
+        if (ret) {
+            asynPrintError(pasynUserSelf, "sis8300drvbcm_get_fiber_software_error returned %d", ret);
+            return ret;
+        }
+        setIntegerParam(addr, BCMFiberSoftwareError, uintValue);
+    }
+
     return ret;
 }