diff --git a/src/epics/seq/main.c b/src/epics/seq/main.c
index 053ee24cf42c7d6547baf0f24a860b7aa33431a6..18a39c5af2ec3cfc4826d577aa39dc772871631c 100644
--- a/src/epics/seq/main.c
+++ b/src/epics/seq/main.c
@@ -44,6 +44,7 @@ of this distribution.
 #include "envDefs.h"
 #include "math.h"
 #include "rcgversion.h"
+#include "sdf_file_loaded.h"
 
 #define epicsExportSharedSymbols
 #include "asLib.h"
@@ -1883,7 +1884,7 @@ int writeEpicsDb(int numchans,		///< Number of channels to write
                         // trigger a BURT_RESTORE
 
                         {
-                            epicsEnvSet("SDF_FILE_LOADED", "1");
+                            set_sdf_file_loaded(1);
                         }
 			break;
 		case SDF_READ_ONLY:
diff --git a/src/epics/seq/sdf_file_loaded.c b/src/epics/seq/sdf_file_loaded.c
new file mode 100644
index 0000000000000000000000000000000000000000..e8fec78f8d7187e86170f76aedaf7809631711db
--- /dev/null
+++ b/src/epics/seq/sdf_file_loaded.c
@@ -0,0 +1,12 @@
+
+static int sdf_file_loaded=0;
+
+int get_sdf_file_loaded()
+{
+    return sdf_file_loaded;
+}
+
+extern void set_sdf_file_loaded(int sfl)
+{
+    sdf_file_loaded = sfl;
+}
\ No newline at end of file
diff --git a/src/epics/seq/sdf_file_loaded.h b/src/epics/seq/sdf_file_loaded.h
new file mode 100644
index 0000000000000000000000000000000000000000..722e4d64ad28aa01dd001481d92fa8f88cd13f49
--- /dev/null
+++ b/src/epics/seq/sdf_file_loaded.h
@@ -0,0 +1,11 @@
+#ifndef DAQD_TRUNK_SDF_FILE_LOADED_H
+#define DAQD_TRUNK_SDF_FILE_LOADED_H
+
+// set or clear and sdf file loaded flag
+// this flag is used to trigger BURT_RESTORE
+// when the safe.snap or other sdf file is completely loaded
+
+extern int get_sdf_file_loaded();
+extern void set_sdf_file_loaded(int);
+
+#endif // DAQD_TRUNK_SDF_FILE_LOADED_H
diff --git a/src/epics/util/fmseq.pl b/src/epics/util/fmseq.pl
index 51475c55b1806a61a8b0f6fe98300af4f0b8b644..eea92757e924e8980062a803f6b80d364c2519d7 100755
--- a/src/epics/util/fmseq.pl
+++ b/src/epics/util/fmseq.pl
@@ -288,7 +288,7 @@ while (<IN>) {
 	# allow burt restore to be triggered by a change in epics
 	# environment variable SDF_FILE_LOAD
 	if ($v_name =~ /BURT_RESTORE/) {
- 	    $vupdate .= "%% sdf_file_loaded = atoi(getenv(\"SDF_FILE_LOADED\"));\n";
+ 	    $vupdate .= "%% sdf_file_loaded = get_sdf_file_loaded();\n";
  	    $vupdate .= "%% if(sdf_file_loaded != sdf_file_loaded_old) {\n";
  	    $vupdate .= "%%    printf(\"BURT_RESTORE triggered to %d\\n\", sdf_file_loaded);\n";
  	    $vupdate .= "%%    sdf_file_loaded_old = sdf_file_loaded;\n";
diff --git a/src/epics/util/skeleton.st b/src/epics/util/skeleton.st
index b2f51adddbc034d03c2569407b074c6c22960e65..7b9b9a6d8fab1bdc66dd1f946bc09f2332abaab1 100644
--- a/src/epics/util/skeleton.st
+++ b/src/epics/util/skeleton.st
@@ -36,6 +36,7 @@ program %SEQUENCER_NAME%
 %% #include "fmReadCoeff.h"
 %% #include "feComms.h"
 %% #include "findSharedMemory.h"
+%% #include "sdf_file_loaded.h"
 %% #define FE_ERROR_CFC 0x400
 
 /* Cat string and make upper case */                                     /* MA */