diff --git a/builddir/3.14.12.5/lib/centos7-x86_64/libemu.so b/builddir/3.14.12.5/lib/centos7-x86_64/libemu.so
index 9e4d178cdd5354e13f5316e191c25ff61f711324..4c7f8b4b56ac4e462edf1a8f3af3288a7d323302 100644
Binary files a/builddir/3.14.12.5/lib/centos7-x86_64/libemu.so and b/builddir/3.14.12.5/lib/centos7-x86_64/libemu.so differ
diff --git a/builddir/3.14.12.5/lib/eldk56-e500v2/libemu.so b/builddir/3.14.12.5/lib/eldk56-e500v2/libemu.so
index a3dee129989aeb00e9e12b416081c5f5f5bf7958..7c06e2073b41a09174f8b99d7cfa00e7790c2b05 100644
Binary files a/builddir/3.14.12.5/lib/eldk56-e500v2/libemu.so and b/builddir/3.14.12.5/lib/eldk56-e500v2/libemu.so differ
diff --git a/builddir/3.15.2/lib/centos7-x86_64/libemu.so b/builddir/3.15.2/lib/centos7-x86_64/libemu.so
index 1ab359bac40cdee69a7f6b5e0220887f7f4277c7..e8f154209f16185170948fc53b1423554ff9433f 100644
Binary files a/builddir/3.15.2/lib/centos7-x86_64/libemu.so and b/builddir/3.15.2/lib/centos7-x86_64/libemu.so differ
diff --git a/builddir/3.15.2/lib/eldk56-e500v2/libemu.so b/builddir/3.15.2/lib/eldk56-e500v2/libemu.so
index 50a83f1fc870075ba3b60f7fa8e31393f29a187a..b43ff4476df8d6b72a4be84a6a310994bc8cedfb 100644
Binary files a/builddir/3.15.2/lib/eldk56-e500v2/libemu.so and b/builddir/3.15.2/lib/eldk56-e500v2/libemu.so differ
diff --git a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.c b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.c
index 0b2209c45d8947a00a779eab87b42a2d1ff650b3..c42c7f35acbcec50781ec64dec821503d7f9d630 100644
--- a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.c
+++ b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.c
@@ -10,28 +10,30 @@
 
 /* Variable declarations */
 # line 13 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short ARCHIVING = 0;
+# line 18 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short HOMCPTFLAG = 0;
-# line 17 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 22 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short statusMTRMov = 0;
-# line 21 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 26 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPlaced = 0;
-# line 27 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 32 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrStop = 0;
-# line 31 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 36 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeCMD = 0;
-# line 35 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 40 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPosCons = 0;
-# line 39 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 44 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrCMD = 0;
-# line 43 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 48 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrGET = 0;
-# line 50 "../.././src/EMU_MTR-HOME_AUTO.st"
-static	short scanPS_Sts = 0;
 # line 55 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short scanPS_Sts = 0;
+# line 60 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short scanMTR_Sts = 0;
-# line 61 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 66 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeSTART = 0;
-# line 68 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 73 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short plimSTATUS = 0;
 
 /* C code definitions */
@@ -52,14 +54,14 @@ static void G_prog_init(struct UserVar *pVar)
 /* Delay function for state "init" in state set "ss1" */
 static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "init" in state set "ss1" */
 static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
 	{
 		*pNextState = 1;
@@ -76,11 +78,11 @@ static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pN
 	{
 	case 0:
 		{
-# line 79 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 84 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 80 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 81 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 85 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 86 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nWAIT\n");
 		}
 		return;
@@ -97,7 +99,7 @@ static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "waiting" in state set "ss1" */
 static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 87 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 92 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 3/*homeSTARTEvent*/) && (homeSTART == 1) && (plimSTATUS == 0))
 	{
 		*pNextState = 2;
@@ -114,7 +116,7 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 89 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 94 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nSTART HOME PROCEDURE\n");
 		}
 		return;
@@ -126,14 +128,14 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "startHOME" in state set "ss1" */
 static void D_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "startHOME" in state set "ss1" */
 static seqBool E_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if ((scanPS_Sts == 0) && (scanMTR_Sts == 0) && (statusMTRMov == 0) && (seq_delay(ssId, 0)))
 	{
 		*pNextState = 3;
@@ -150,24 +152,24 @@ static void A_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int transNum, in
 	{
 	case 0:
 		{
-# line 97 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\n GO HOME\n");
-# line 98 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 1;
-# line 99 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
-# line 100 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 106 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 1;
-# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 107 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 108 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 109 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
+# line 110 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
 		}
 		return;
 	}
@@ -183,7 +185,7 @@ static void D_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "limitON" in state set "ss1" */
 static seqBool E_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 111 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 116 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 4/*plimSTATUSEvent*/) && (plimSTATUS == 1))
 	{
 		*pNextState = 4;
@@ -200,12 +202,12 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 113 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 118 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nLIMIT HIGH\n");
-# line 114 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 119 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 115 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
+# line 120 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
 		}
 		return;
 	}
@@ -216,17 +218,17 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "breakON" in state set "ss1" */
 static void D_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "breakON" in state set "ss1" */
 static seqBool E_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0))
 	{
-		*pNextState = 0;
+		*pNextState = 5;
 		*pTransNum = 0;
 		return TRUE;
 	}
@@ -240,28 +242,68 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 123 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nINIT POSITION\n");
-# line 124 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 125 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 127 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nBRAKE ON\n");
-# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
-# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 134 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
+# line 135 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 136 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 137 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 0;
-# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
+# line 138 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+		}
+		return;
+	}
+}
+
+/****** Code for state "stopArchiving" in state set "ss1" ******/
+
+/* Delay function for state "stopArchiving" in state set "ss1" */
+static void D_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	seq_delayInit(ssId, 0, (1.0));
+}
+
+/* Event function for state "stopArchiving" in state set "ss1" */
+static seqBool E_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	if (seq_delay(ssId, 0))
+	{
+		*pNextState = 0;
+		*pTransNum = 0;
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/* Action function for state "stopArchiving" in state set "ss1" */
+static void A_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
+{
+	switch(transNum)
+	{
+	case 0:
+		{
+# line 146 "../.././src/EMU_MTR-HOME_AUTO.st"
+			printf("\nStop Archiving\n");
+# line 147 "../.././src/EMU_MTR-HOME_AUTO.st"
+			ARCHIVING = 0;
+# line 148 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 0/*ARCHIVING*/, 0);
 		}
 		return;
 	}
@@ -272,18 +314,19 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Channel table */
 static seqChan G_channels[] = {
 	/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 5, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 6, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 7, 1, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 8, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 9, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 10, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 11, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 12, 2, 1, 0, 0},
-	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 13, 0, 1, 0, 0},
-	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 14, 0, 1, 0, 0},
-	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 15, 3, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 16, 4, 1, 0, 0}
+	{"LNS-ISRC-010:PBI-EM:Archive", (size_t)&ARCHIVING, "ARCHIVING", "short", 1, 5, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 6, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 7, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 8, 1, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 9, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 10, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 11, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 12, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 13, 2, 1, 0, 0},
+	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 14, 0, 1, 0, 0},
+	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 15, 0, 1, 0, 0},
+	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 16, 3, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 17, 4, 1, 0, 0}
 };
 
 /* Event masks for state set "ss1" */
@@ -291,17 +334,20 @@ static const seqMask	EM_ss1_0_init[] = {
 	0x00000000,
 };
 static const seqMask	EM_ss1_0_waiting[] = {
-	0x00018008,
+	0x00030008,
 };
 static const seqMask	EM_ss1_0_startHOME[] = {
-	0x00006040,
+	0x0000c080,
 };
 static const seqMask	EM_ss1_0_limitON[] = {
-	0x00010010,
+	0x00020010,
 };
 static const seqMask	EM_ss1_0_breakON[] = {
 	0x00000000,
 };
+static const seqMask	EM_ss1_0_stopArchiving[] = {
+	0x00000000,
+};
 
 /* State table for state set "ss1" */
 static seqState G_ss1_states[] = {
@@ -355,6 +401,16 @@ static seqState G_ss1_states[] = {
 	/* event mask array */  EM_ss1_0_breakON,
 	/* state options */     (0)
 	},
+	{
+	/* state name */        "stopArchiving",
+	/* action function */   A_ss1_0_stopArchiving,
+	/* event function */    E_ss1_0_stopArchiving,
+	/* delay function */    D_ss1_0_stopArchiving,
+	/* entry function */    0,
+	/* exit function */     0,
+	/* event mask array */  EM_ss1_0_stopArchiving,
+	/* state options */     (0)
+	},
 };
 
 /* State set table */
@@ -362,7 +418,7 @@ static seqSS G_state_sets[] = {
 	{
 	/* state set name */    "ss1",
 	/* states */            G_ss1_states,
-	/* number of states */  5,
+	/* number of states */  6,
 	/* number of delays */  1
 	},
 };
@@ -372,7 +428,7 @@ seqProgram homeMtrAuto = {
 	/* magic number */      2001010,
 	/* program name */      "homeMtrAuto",
 	/* channels */          G_channels,
-	/* num. channels */     12,
+	/* num. channels */     13,
 	/* state sets */        G_state_sets,
 	/* num. state sets */   1,
 	/* user var size */     0,
diff --git a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.i b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.i
index 1d5294f4b4b2a8f19547e0e4fb0f3038c59c1a89..23a00d18d569955d0ab8a25563120d69188ba185 100644
--- a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.i
+++ b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.i
@@ -16,6 +16,11 @@ program homeMtrAuto
 %%#include <stdlib.h>
 
 
+short ARCHIVING;
+assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
+monitor ARCHIVING;
+
+
 short HOMCPTFLAG;
 assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
 monitor HOMCPTFLAG;
@@ -137,7 +142,16 @@ ss ss1
     pvPut(homeSTART);
     brakeMtrCMD=0;
     pvPut(brakeMtrCMD);
-    }state init
+    }state stopArchiving
            }
 
+  state stopArchiving
+     {
+     when(delay(1.0))
+    {
+    printf("\nStop Archiving\n");
+             ARCHIVING=0;
+    pvPut(ARCHIVING);
+    }state init
+           }
 }
diff --git a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.o b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.o
index 4b79bcfec5061e9339329f1e72dc40c40455923f..473f7b1160324146e7e2e3663683a00ef145a089 100644
Binary files a/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.o and b/builddir/O.3.14.12.5_centos7-x86_64/EMU_MTR-HOME_AUTO.o differ
diff --git a/builddir/O.3.14.12.5_centos7-x86_64/libemu.so b/builddir/O.3.14.12.5_centos7-x86_64/libemu.so
index 9e4d178cdd5354e13f5316e191c25ff61f711324..4c7f8b4b56ac4e462edf1a8f3af3288a7d323302 100755
Binary files a/builddir/O.3.14.12.5_centos7-x86_64/libemu.so and b/builddir/O.3.14.12.5_centos7-x86_64/libemu.so differ
diff --git a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.c b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
index 0b2209c45d8947a00a779eab87b42a2d1ff650b3..c42c7f35acbcec50781ec64dec821503d7f9d630 100644
--- a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
+++ b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
@@ -10,28 +10,30 @@
 
 /* Variable declarations */
 # line 13 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short ARCHIVING = 0;
+# line 18 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short HOMCPTFLAG = 0;
-# line 17 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 22 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short statusMTRMov = 0;
-# line 21 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 26 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPlaced = 0;
-# line 27 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 32 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrStop = 0;
-# line 31 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 36 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeCMD = 0;
-# line 35 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 40 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPosCons = 0;
-# line 39 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 44 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrCMD = 0;
-# line 43 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 48 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrGET = 0;
-# line 50 "../.././src/EMU_MTR-HOME_AUTO.st"
-static	short scanPS_Sts = 0;
 # line 55 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short scanPS_Sts = 0;
+# line 60 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short scanMTR_Sts = 0;
-# line 61 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 66 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeSTART = 0;
-# line 68 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 73 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short plimSTATUS = 0;
 
 /* C code definitions */
@@ -52,14 +54,14 @@ static void G_prog_init(struct UserVar *pVar)
 /* Delay function for state "init" in state set "ss1" */
 static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "init" in state set "ss1" */
 static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
 	{
 		*pNextState = 1;
@@ -76,11 +78,11 @@ static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pN
 	{
 	case 0:
 		{
-# line 79 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 84 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 80 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 81 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 85 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 86 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nWAIT\n");
 		}
 		return;
@@ -97,7 +99,7 @@ static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "waiting" in state set "ss1" */
 static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 87 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 92 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 3/*homeSTARTEvent*/) && (homeSTART == 1) && (plimSTATUS == 0))
 	{
 		*pNextState = 2;
@@ -114,7 +116,7 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 89 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 94 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nSTART HOME PROCEDURE\n");
 		}
 		return;
@@ -126,14 +128,14 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "startHOME" in state set "ss1" */
 static void D_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "startHOME" in state set "ss1" */
 static seqBool E_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if ((scanPS_Sts == 0) && (scanMTR_Sts == 0) && (statusMTRMov == 0) && (seq_delay(ssId, 0)))
 	{
 		*pNextState = 3;
@@ -150,24 +152,24 @@ static void A_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int transNum, in
 	{
 	case 0:
 		{
-# line 97 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\n GO HOME\n");
-# line 98 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 1;
-# line 99 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
-# line 100 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 106 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 1;
-# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 107 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 108 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 109 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
+# line 110 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
 		}
 		return;
 	}
@@ -183,7 +185,7 @@ static void D_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "limitON" in state set "ss1" */
 static seqBool E_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 111 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 116 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 4/*plimSTATUSEvent*/) && (plimSTATUS == 1))
 	{
 		*pNextState = 4;
@@ -200,12 +202,12 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 113 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 118 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nLIMIT HIGH\n");
-# line 114 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 119 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 115 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
+# line 120 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
 		}
 		return;
 	}
@@ -216,17 +218,17 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "breakON" in state set "ss1" */
 static void D_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "breakON" in state set "ss1" */
 static seqBool E_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0))
 	{
-		*pNextState = 0;
+		*pNextState = 5;
 		*pTransNum = 0;
 		return TRUE;
 	}
@@ -240,28 +242,68 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 123 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nINIT POSITION\n");
-# line 124 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 125 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 127 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nBRAKE ON\n");
-# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
-# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 134 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
+# line 135 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 136 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 137 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 0;
-# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
+# line 138 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+		}
+		return;
+	}
+}
+
+/****** Code for state "stopArchiving" in state set "ss1" ******/
+
+/* Delay function for state "stopArchiving" in state set "ss1" */
+static void D_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	seq_delayInit(ssId, 0, (1.0));
+}
+
+/* Event function for state "stopArchiving" in state set "ss1" */
+static seqBool E_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	if (seq_delay(ssId, 0))
+	{
+		*pNextState = 0;
+		*pTransNum = 0;
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/* Action function for state "stopArchiving" in state set "ss1" */
+static void A_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
+{
+	switch(transNum)
+	{
+	case 0:
+		{
+# line 146 "../.././src/EMU_MTR-HOME_AUTO.st"
+			printf("\nStop Archiving\n");
+# line 147 "../.././src/EMU_MTR-HOME_AUTO.st"
+			ARCHIVING = 0;
+# line 148 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 0/*ARCHIVING*/, 0);
 		}
 		return;
 	}
@@ -272,18 +314,19 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Channel table */
 static seqChan G_channels[] = {
 	/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 5, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 6, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 7, 1, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 8, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 9, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 10, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 11, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 12, 2, 1, 0, 0},
-	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 13, 0, 1, 0, 0},
-	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 14, 0, 1, 0, 0},
-	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 15, 3, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 16, 4, 1, 0, 0}
+	{"LNS-ISRC-010:PBI-EM:Archive", (size_t)&ARCHIVING, "ARCHIVING", "short", 1, 5, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 6, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 7, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 8, 1, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 9, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 10, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 11, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 12, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 13, 2, 1, 0, 0},
+	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 14, 0, 1, 0, 0},
+	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 15, 0, 1, 0, 0},
+	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 16, 3, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 17, 4, 1, 0, 0}
 };
 
 /* Event masks for state set "ss1" */
@@ -291,17 +334,20 @@ static const seqMask	EM_ss1_0_init[] = {
 	0x00000000,
 };
 static const seqMask	EM_ss1_0_waiting[] = {
-	0x00018008,
+	0x00030008,
 };
 static const seqMask	EM_ss1_0_startHOME[] = {
-	0x00006040,
+	0x0000c080,
 };
 static const seqMask	EM_ss1_0_limitON[] = {
-	0x00010010,
+	0x00020010,
 };
 static const seqMask	EM_ss1_0_breakON[] = {
 	0x00000000,
 };
+static const seqMask	EM_ss1_0_stopArchiving[] = {
+	0x00000000,
+};
 
 /* State table for state set "ss1" */
 static seqState G_ss1_states[] = {
@@ -355,6 +401,16 @@ static seqState G_ss1_states[] = {
 	/* event mask array */  EM_ss1_0_breakON,
 	/* state options */     (0)
 	},
+	{
+	/* state name */        "stopArchiving",
+	/* action function */   A_ss1_0_stopArchiving,
+	/* event function */    E_ss1_0_stopArchiving,
+	/* delay function */    D_ss1_0_stopArchiving,
+	/* entry function */    0,
+	/* exit function */     0,
+	/* event mask array */  EM_ss1_0_stopArchiving,
+	/* state options */     (0)
+	},
 };
 
 /* State set table */
@@ -362,7 +418,7 @@ static seqSS G_state_sets[] = {
 	{
 	/* state set name */    "ss1",
 	/* states */            G_ss1_states,
-	/* number of states */  5,
+	/* number of states */  6,
 	/* number of delays */  1
 	},
 };
@@ -372,7 +428,7 @@ seqProgram homeMtrAuto = {
 	/* magic number */      2001010,
 	/* program name */      "homeMtrAuto",
 	/* channels */          G_channels,
-	/* num. channels */     12,
+	/* num. channels */     13,
 	/* state sets */        G_state_sets,
 	/* num. state sets */   1,
 	/* user var size */     0,
diff --git a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.i b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
index 79348dfc2d5e5ba437f23816ba928cd4d1b681f8..36c7676b86d2ae17080f929f2d9bb96f303cd5ea 100644
--- a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
+++ b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
@@ -15,6 +15,11 @@ program homeMtrAuto
 %%#include <stdlib.h>
 
 
+short ARCHIVING;
+assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
+monitor ARCHIVING;
+
+
 short HOMCPTFLAG;
 assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
 monitor HOMCPTFLAG;
@@ -136,7 +141,16 @@ ss ss1
     pvPut(homeSTART);
     brakeMtrCMD=0;
     pvPut(brakeMtrCMD);
-    }state init
+    }state stopArchiving
            }
 
+  state stopArchiving
+     {
+     when(delay(1.0))
+    {
+    printf("\nStop Archiving\n");
+             ARCHIVING=0;
+    pvPut(ARCHIVING);
+    }state init
+           }
 }
diff --git a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.o b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.o
index 758fd68e93de489bf2f3b4fe122545edc96af3c8..e4aa560ec2c6b0320130650f7b9752040ed4bf45 100644
Binary files a/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.o and b/builddir/O.3.14.12.5_eldk56-e500v2/EMU_MTR-HOME_AUTO.o differ
diff --git a/builddir/O.3.14.12.5_eldk56-e500v2/libemu.so b/builddir/O.3.14.12.5_eldk56-e500v2/libemu.so
index a3dee129989aeb00e9e12b416081c5f5f5bf7958..7c06e2073b41a09174f8b99d7cfa00e7790c2b05 100755
Binary files a/builddir/O.3.14.12.5_eldk56-e500v2/libemu.so and b/builddir/O.3.14.12.5_eldk56-e500v2/libemu.so differ
diff --git a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.c b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.c
index 0b2209c45d8947a00a779eab87b42a2d1ff650b3..c42c7f35acbcec50781ec64dec821503d7f9d630 100644
--- a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.c
+++ b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.c
@@ -10,28 +10,30 @@
 
 /* Variable declarations */
 # line 13 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short ARCHIVING = 0;
+# line 18 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short HOMCPTFLAG = 0;
-# line 17 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 22 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short statusMTRMov = 0;
-# line 21 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 26 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPlaced = 0;
-# line 27 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 32 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrStop = 0;
-# line 31 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 36 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeCMD = 0;
-# line 35 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 40 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPosCons = 0;
-# line 39 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 44 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrCMD = 0;
-# line 43 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 48 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrGET = 0;
-# line 50 "../.././src/EMU_MTR-HOME_AUTO.st"
-static	short scanPS_Sts = 0;
 # line 55 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short scanPS_Sts = 0;
+# line 60 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short scanMTR_Sts = 0;
-# line 61 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 66 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeSTART = 0;
-# line 68 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 73 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short plimSTATUS = 0;
 
 /* C code definitions */
@@ -52,14 +54,14 @@ static void G_prog_init(struct UserVar *pVar)
 /* Delay function for state "init" in state set "ss1" */
 static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "init" in state set "ss1" */
 static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
 	{
 		*pNextState = 1;
@@ -76,11 +78,11 @@ static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pN
 	{
 	case 0:
 		{
-# line 79 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 84 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 80 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 81 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 85 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 86 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nWAIT\n");
 		}
 		return;
@@ -97,7 +99,7 @@ static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "waiting" in state set "ss1" */
 static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 87 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 92 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 3/*homeSTARTEvent*/) && (homeSTART == 1) && (plimSTATUS == 0))
 	{
 		*pNextState = 2;
@@ -114,7 +116,7 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 89 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 94 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nSTART HOME PROCEDURE\n");
 		}
 		return;
@@ -126,14 +128,14 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "startHOME" in state set "ss1" */
 static void D_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "startHOME" in state set "ss1" */
 static seqBool E_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if ((scanPS_Sts == 0) && (scanMTR_Sts == 0) && (statusMTRMov == 0) && (seq_delay(ssId, 0)))
 	{
 		*pNextState = 3;
@@ -150,24 +152,24 @@ static void A_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int transNum, in
 	{
 	case 0:
 		{
-# line 97 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\n GO HOME\n");
-# line 98 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 1;
-# line 99 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
-# line 100 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 106 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 1;
-# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 107 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 108 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 109 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
+# line 110 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
 		}
 		return;
 	}
@@ -183,7 +185,7 @@ static void D_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "limitON" in state set "ss1" */
 static seqBool E_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 111 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 116 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 4/*plimSTATUSEvent*/) && (plimSTATUS == 1))
 	{
 		*pNextState = 4;
@@ -200,12 +202,12 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 113 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 118 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nLIMIT HIGH\n");
-# line 114 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 119 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 115 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
+# line 120 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
 		}
 		return;
 	}
@@ -216,17 +218,17 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "breakON" in state set "ss1" */
 static void D_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "breakON" in state set "ss1" */
 static seqBool E_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0))
 	{
-		*pNextState = 0;
+		*pNextState = 5;
 		*pTransNum = 0;
 		return TRUE;
 	}
@@ -240,28 +242,68 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 123 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nINIT POSITION\n");
-# line 124 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 125 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 127 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nBRAKE ON\n");
-# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
-# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 134 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
+# line 135 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 136 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 137 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 0;
-# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
+# line 138 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+		}
+		return;
+	}
+}
+
+/****** Code for state "stopArchiving" in state set "ss1" ******/
+
+/* Delay function for state "stopArchiving" in state set "ss1" */
+static void D_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	seq_delayInit(ssId, 0, (1.0));
+}
+
+/* Event function for state "stopArchiving" in state set "ss1" */
+static seqBool E_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	if (seq_delay(ssId, 0))
+	{
+		*pNextState = 0;
+		*pTransNum = 0;
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/* Action function for state "stopArchiving" in state set "ss1" */
+static void A_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
+{
+	switch(transNum)
+	{
+	case 0:
+		{
+# line 146 "../.././src/EMU_MTR-HOME_AUTO.st"
+			printf("\nStop Archiving\n");
+# line 147 "../.././src/EMU_MTR-HOME_AUTO.st"
+			ARCHIVING = 0;
+# line 148 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 0/*ARCHIVING*/, 0);
 		}
 		return;
 	}
@@ -272,18 +314,19 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Channel table */
 static seqChan G_channels[] = {
 	/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 5, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 6, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 7, 1, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 8, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 9, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 10, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 11, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 12, 2, 1, 0, 0},
-	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 13, 0, 1, 0, 0},
-	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 14, 0, 1, 0, 0},
-	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 15, 3, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 16, 4, 1, 0, 0}
+	{"LNS-ISRC-010:PBI-EM:Archive", (size_t)&ARCHIVING, "ARCHIVING", "short", 1, 5, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 6, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 7, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 8, 1, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 9, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 10, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 11, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 12, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 13, 2, 1, 0, 0},
+	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 14, 0, 1, 0, 0},
+	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 15, 0, 1, 0, 0},
+	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 16, 3, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 17, 4, 1, 0, 0}
 };
 
 /* Event masks for state set "ss1" */
@@ -291,17 +334,20 @@ static const seqMask	EM_ss1_0_init[] = {
 	0x00000000,
 };
 static const seqMask	EM_ss1_0_waiting[] = {
-	0x00018008,
+	0x00030008,
 };
 static const seqMask	EM_ss1_0_startHOME[] = {
-	0x00006040,
+	0x0000c080,
 };
 static const seqMask	EM_ss1_0_limitON[] = {
-	0x00010010,
+	0x00020010,
 };
 static const seqMask	EM_ss1_0_breakON[] = {
 	0x00000000,
 };
+static const seqMask	EM_ss1_0_stopArchiving[] = {
+	0x00000000,
+};
 
 /* State table for state set "ss1" */
 static seqState G_ss1_states[] = {
@@ -355,6 +401,16 @@ static seqState G_ss1_states[] = {
 	/* event mask array */  EM_ss1_0_breakON,
 	/* state options */     (0)
 	},
+	{
+	/* state name */        "stopArchiving",
+	/* action function */   A_ss1_0_stopArchiving,
+	/* event function */    E_ss1_0_stopArchiving,
+	/* delay function */    D_ss1_0_stopArchiving,
+	/* entry function */    0,
+	/* exit function */     0,
+	/* event mask array */  EM_ss1_0_stopArchiving,
+	/* state options */     (0)
+	},
 };
 
 /* State set table */
@@ -362,7 +418,7 @@ static seqSS G_state_sets[] = {
 	{
 	/* state set name */    "ss1",
 	/* states */            G_ss1_states,
-	/* number of states */  5,
+	/* number of states */  6,
 	/* number of delays */  1
 	},
 };
@@ -372,7 +428,7 @@ seqProgram homeMtrAuto = {
 	/* magic number */      2001010,
 	/* program name */      "homeMtrAuto",
 	/* channels */          G_channels,
-	/* num. channels */     12,
+	/* num. channels */     13,
 	/* state sets */        G_state_sets,
 	/* num. state sets */   1,
 	/* user var size */     0,
diff --git a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.i b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.i
index 1d5294f4b4b2a8f19547e0e4fb0f3038c59c1a89..23a00d18d569955d0ab8a25563120d69188ba185 100644
--- a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.i
+++ b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.i
@@ -16,6 +16,11 @@ program homeMtrAuto
 %%#include <stdlib.h>
 
 
+short ARCHIVING;
+assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
+monitor ARCHIVING;
+
+
 short HOMCPTFLAG;
 assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
 monitor HOMCPTFLAG;
@@ -137,7 +142,16 @@ ss ss1
     pvPut(homeSTART);
     brakeMtrCMD=0;
     pvPut(brakeMtrCMD);
-    }state init
+    }state stopArchiving
            }
 
+  state stopArchiving
+     {
+     when(delay(1.0))
+    {
+    printf("\nStop Archiving\n");
+             ARCHIVING=0;
+    pvPut(ARCHIVING);
+    }state init
+           }
 }
diff --git a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.o b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.o
index 9d8bf842e433255e88636f87f0fce78665a3a349..d18fbf81e1892d01e032d0ee6a5cf88d8fed396f 100644
Binary files a/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.o and b/builddir/O.3.15.2_centos7-x86_64/EMU_MTR-HOME_AUTO.o differ
diff --git a/builddir/O.3.15.2_centos7-x86_64/libemu.so b/builddir/O.3.15.2_centos7-x86_64/libemu.so
index 1ab359bac40cdee69a7f6b5e0220887f7f4277c7..e8f154209f16185170948fc53b1423554ff9433f 100755
Binary files a/builddir/O.3.15.2_centos7-x86_64/libemu.so and b/builddir/O.3.15.2_centos7-x86_64/libemu.so differ
diff --git a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.c b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
index 0b2209c45d8947a00a779eab87b42a2d1ff650b3..c42c7f35acbcec50781ec64dec821503d7f9d630 100644
--- a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
+++ b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.c
@@ -10,28 +10,30 @@
 
 /* Variable declarations */
 # line 13 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short ARCHIVING = 0;
+# line 18 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short HOMCPTFLAG = 0;
-# line 17 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 22 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short statusMTRMov = 0;
-# line 21 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 26 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPlaced = 0;
-# line 27 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 32 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrStop = 0;
-# line 31 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 36 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeCMD = 0;
-# line 35 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 40 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short mtrPosCons = 0;
-# line 39 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 44 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrCMD = 0;
-# line 43 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 48 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short brakeMtrGET = 0;
-# line 50 "../.././src/EMU_MTR-HOME_AUTO.st"
-static	short scanPS_Sts = 0;
 # line 55 "../.././src/EMU_MTR-HOME_AUTO.st"
+static	short scanPS_Sts = 0;
+# line 60 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short scanMTR_Sts = 0;
-# line 61 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 66 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short homeSTART = 0;
-# line 68 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 73 "../.././src/EMU_MTR-HOME_AUTO.st"
 static	short plimSTATUS = 0;
 
 /* C code definitions */
@@ -52,14 +54,14 @@ static void G_prog_init(struct UserVar *pVar)
 /* Delay function for state "init" in state set "ss1" */
 static void D_ss1_0_init(SS_ID ssId, struct UserVar *pVar)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "init" in state set "ss1" */
 static seqBool E_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 77 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 82 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0) && (seq_pvConnectCount(ssId) == seq_pvChannelCount(ssId)))
 	{
 		*pNextState = 1;
@@ -76,11 +78,11 @@ static void A_ss1_0_init(SS_ID ssId, struct UserVar *pVar, int transNum, int *pN
 	{
 	case 0:
 		{
-# line 79 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 84 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 80 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 81 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 85 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 86 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nWAIT\n");
 		}
 		return;
@@ -97,7 +99,7 @@ static void D_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "waiting" in state set "ss1" */
 static seqBool E_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 87 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 92 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 3/*homeSTARTEvent*/) && (homeSTART == 1) && (plimSTATUS == 0))
 	{
 		*pNextState = 2;
@@ -114,7 +116,7 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 89 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 94 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nSTART HOME PROCEDURE\n");
 		}
 		return;
@@ -126,14 +128,14 @@ static void A_ss1_0_waiting(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "startHOME" in state set "ss1" */
 static void D_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "startHOME" in state set "ss1" */
 static seqBool E_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 96 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if ((scanPS_Sts == 0) && (scanMTR_Sts == 0) && (statusMTRMov == 0) && (seq_delay(ssId, 0)))
 	{
 		*pNextState = 3;
@@ -150,24 +152,24 @@ static void A_ss1_0_startHOME(SS_ID ssId, struct UserVar *pVar, int transNum, in
 	{
 	case 0:
 		{
-# line 97 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\n GO HOME\n");
-# line 98 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 1;
-# line 99 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
-# line 100 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 101 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 106 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 1;
-# line 102 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 103 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 107 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 108 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 104 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 109 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 105 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
+# line 110 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
 		}
 		return;
 	}
@@ -183,7 +185,7 @@ static void D_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar)
 /* Event function for state "limitON" in state set "ss1" */
 static seqBool E_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 111 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 116 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_efTestAndClear(ssId, 4/*plimSTATUSEvent*/) && (plimSTATUS == 1))
 	{
 		*pNextState = 4;
@@ -200,12 +202,12 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 113 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 118 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nLIMIT HIGH\n");
-# line 114 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 119 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 115 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
+# line 120 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
 		}
 		return;
 	}
@@ -216,17 +218,17 @@ static void A_ss1_0_limitON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Delay function for state "breakON" in state set "ss1" */
 static void D_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	seq_delayInit(ssId, 0, (1.0));
 }
 
 /* Event function for state "breakON" in state set "ss1" */
 static seqBool E_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
 {
-# line 121 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
 	if (seq_delay(ssId, 0))
 	{
-		*pNextState = 0;
+		*pNextState = 5;
 		*pTransNum = 0;
 		return TRUE;
 	}
@@ -240,28 +242,68 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 	{
 	case 0:
 		{
-# line 123 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nINIT POSITION\n");
-# line 124 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
 			HOMCPTFLAG = 0;
-# line 125 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 0/*HOMCPTFLAG*/, 0);
-# line 126 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 1/*HOMCPTFLAG*/, 0);
+# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
 			seq_delay(ssId, 0);
-# line 127 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
 			printf("\nBRAKE ON\n");
-# line 128 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeCMD = 1;
-# line 129 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 4/*homeCMD*/, 0);
-# line 130 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 134 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 5/*homeCMD*/, 0);
+# line 135 "../.././src/EMU_MTR-HOME_AUTO.st"
 			homeSTART = 0;
-# line 131 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 10/*homeSTART*/, 0);
-# line 132 "../.././src/EMU_MTR-HOME_AUTO.st"
+# line 136 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 11/*homeSTART*/, 0);
+# line 137 "../.././src/EMU_MTR-HOME_AUTO.st"
 			brakeMtrCMD = 0;
-# line 133 "../.././src/EMU_MTR-HOME_AUTO.st"
-			seq_pvPut(ssId, 6/*brakeMtrCMD*/, 0);
+# line 138 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 7/*brakeMtrCMD*/, 0);
+		}
+		return;
+	}
+}
+
+/****** Code for state "stopArchiving" in state set "ss1" ******/
+
+/* Delay function for state "stopArchiving" in state set "ss1" */
+static void D_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	seq_delayInit(ssId, 0, (1.0));
+}
+
+/* Event function for state "stopArchiving" in state set "ss1" */
+static seqBool E_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int *pTransNum, int *pNextState)
+{
+# line 144 "../.././src/EMU_MTR-HOME_AUTO.st"
+	if (seq_delay(ssId, 0))
+	{
+		*pNextState = 0;
+		*pTransNum = 0;
+		return TRUE;
+	}
+	return FALSE;
+}
+
+/* Action function for state "stopArchiving" in state set "ss1" */
+static void A_ss1_0_stopArchiving(SS_ID ssId, struct UserVar *pVar, int transNum, int *pNextState)
+{
+	switch(transNum)
+	{
+	case 0:
+		{
+# line 146 "../.././src/EMU_MTR-HOME_AUTO.st"
+			printf("\nStop Archiving\n");
+# line 147 "../.././src/EMU_MTR-HOME_AUTO.st"
+			ARCHIVING = 0;
+# line 148 "../.././src/EMU_MTR-HOME_AUTO.st"
+			seq_pvPut(ssId, 0/*ARCHIVING*/, 0);
 		}
 		return;
 	}
@@ -272,18 +314,19 @@ static void A_ss1_0_breakON(SS_ID ssId, struct UserVar *pVar, int transNum, int
 /* Channel table */
 static seqChan G_channels[] = {
 	/* chName, offset, varName, varType, count, eventNum, efId, monitored, queueSize, queueIndex */
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 5, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 6, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 7, 1, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 8, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 9, 0, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 10, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 11, 0, 1, 0, 0},
-	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 12, 2, 1, 0, 0},
-	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 13, 0, 1, 0, 0},
-	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 14, 0, 1, 0, 0},
-	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 15, 3, 1, 0, 0},
-	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 16, 4, 1, 0, 0}
+	{"LNS-ISRC-010:PBI-EM:Archive", (size_t)&ARCHIVING, "ARCHIVING", "short", 1, 5, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG", (size_t)&HOMCPTFLAG, "HOMCPTFLAG", "short", 1, 6, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.MOVN", (size_t)&statusMTRMov, "statusMTRMov", "short", 1, 7, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-AXISSTS", (size_t)&mtrPlaced, "mtrPlaced", "short", 1, 8, 1, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}.SPMG", (size_t)&mtrStop, "mtrStop", "short", 1, 9, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-HOMCMD", (size_t)&homeCMD, "homeCMD", "short", 1, 10, 0, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}", (size_t)&mtrPosCons, "mtrPosCons", "short", 1, 11, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_SET", (size_t)&brakeMtrCMD, "brakeMtrCMD", "short", 1, 12, 0, 1, 0, 0},
+	{"{PREFIX}:PBI-EM:VER-BRAKE_GET", (size_t)&brakeMtrGET, "brakeMtrGET", "short", 1, 13, 2, 1, 0, 0},
+	{"{DEVICE}:PS.BUSY", (size_t)&scanPS_Sts, "scanPS_Sts", "short", 1, 14, 0, 1, 0, 0},
+	{"{DEVICE}:MTR.BUSY", (size_t)&scanMTR_Sts, "scanMTR_Sts", "short", 1, 15, 0, 1, 0, 0},
+	{"{DEVICE}:PROC-AUTO-HOME", (size_t)&homeSTART, "homeSTART", "short", 1, 16, 3, 1, 0, 0},
+	{"{PMACPREFIX}:{MOTOR_NAME1}-PENDLSTS", (size_t)&plimSTATUS, "plimSTATUS", "short", 1, 17, 4, 1, 0, 0}
 };
 
 /* Event masks for state set "ss1" */
@@ -291,17 +334,20 @@ static const seqMask	EM_ss1_0_init[] = {
 	0x00000000,
 };
 static const seqMask	EM_ss1_0_waiting[] = {
-	0x00018008,
+	0x00030008,
 };
 static const seqMask	EM_ss1_0_startHOME[] = {
-	0x00006040,
+	0x0000c080,
 };
 static const seqMask	EM_ss1_0_limitON[] = {
-	0x00010010,
+	0x00020010,
 };
 static const seqMask	EM_ss1_0_breakON[] = {
 	0x00000000,
 };
+static const seqMask	EM_ss1_0_stopArchiving[] = {
+	0x00000000,
+};
 
 /* State table for state set "ss1" */
 static seqState G_ss1_states[] = {
@@ -355,6 +401,16 @@ static seqState G_ss1_states[] = {
 	/* event mask array */  EM_ss1_0_breakON,
 	/* state options */     (0)
 	},
+	{
+	/* state name */        "stopArchiving",
+	/* action function */   A_ss1_0_stopArchiving,
+	/* event function */    E_ss1_0_stopArchiving,
+	/* delay function */    D_ss1_0_stopArchiving,
+	/* entry function */    0,
+	/* exit function */     0,
+	/* event mask array */  EM_ss1_0_stopArchiving,
+	/* state options */     (0)
+	},
 };
 
 /* State set table */
@@ -362,7 +418,7 @@ static seqSS G_state_sets[] = {
 	{
 	/* state set name */    "ss1",
 	/* states */            G_ss1_states,
-	/* number of states */  5,
+	/* number of states */  6,
 	/* number of delays */  1
 	},
 };
@@ -372,7 +428,7 @@ seqProgram homeMtrAuto = {
 	/* magic number */      2001010,
 	/* program name */      "homeMtrAuto",
 	/* channels */          G_channels,
-	/* num. channels */     12,
+	/* num. channels */     13,
 	/* state sets */        G_state_sets,
 	/* num. state sets */   1,
 	/* user var size */     0,
diff --git a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.i b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
index 79348dfc2d5e5ba437f23816ba928cd4d1b681f8..36c7676b86d2ae17080f929f2d9bb96f303cd5ea 100644
--- a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
+++ b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.i
@@ -15,6 +15,11 @@ program homeMtrAuto
 %%#include <stdlib.h>
 
 
+short ARCHIVING;
+assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
+monitor ARCHIVING;
+
+
 short HOMCPTFLAG;
 assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
 monitor HOMCPTFLAG;
@@ -136,7 +141,16 @@ ss ss1
     pvPut(homeSTART);
     brakeMtrCMD=0;
     pvPut(brakeMtrCMD);
-    }state init
+    }state stopArchiving
            }
 
+  state stopArchiving
+     {
+     when(delay(1.0))
+    {
+    printf("\nStop Archiving\n");
+             ARCHIVING=0;
+    pvPut(ARCHIVING);
+    }state init
+           }
 }
diff --git a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.o b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.o
index 758fd68e93de489bf2f3b4fe122545edc96af3c8..e4aa560ec2c6b0320130650f7b9752040ed4bf45 100644
Binary files a/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.o and b/builddir/O.3.15.2_eldk56-e500v2/EMU_MTR-HOME_AUTO.o differ
diff --git a/builddir/O.3.15.2_eldk56-e500v2/libemu.so b/builddir/O.3.15.2_eldk56-e500v2/libemu.so
index 50a83f1fc870075ba3b60f7fa8e31393f29a187a..b43ff4476df8d6b72a4be84a6a310994bc8cedfb 100755
Binary files a/builddir/O.3.15.2_eldk56-e500v2/libemu.so and b/builddir/O.3.15.2_eldk56-e500v2/libemu.so differ
diff --git a/builddir/opi/EMU.opi b/builddir/opi/EMU.opi
index 9422d067a1b7fca9aaf9c574a8620aac947496e1..3eeabaaf608c8e79e2304a5d24d27afd871e088e 100644
--- a/builddir/opi/EMU.opi
+++ b/builddir/opi/EMU.opi
@@ -3554,7 +3554,15 @@ $(pv_value)</tooltip>
         <wuid>1e771979:1565068c2e3:-2a01</wuid>
         <pv_value />
         <text>START</text>
-        <scripts />
+        <scripts>
+          <path pathString="EmbeddedJs" checkConnect="true" sfe="false" seoe="false">
+            <scriptName>StartArchiving</scriptName>
+            <scriptText><![CDATA[importPackage(Packages.org.csstudio.opibuilder.scriptUtil);
+if(PVUtil.getDouble(pvs[0])==1){pvs[1].setValue(1);}]]></scriptText>
+            <pv trig="true">${PREFIX_SCAN}:$(NAME_MTR).EXSC</pv>
+            <pv trig="false">LNS-ISRC-010:PBI-EM:Archive</pv>
+          </path>
+        </scripts>
         <border_alarm_sensitive>false</border_alarm_sensitive>
         <height>55</height>
         <border_width>2</border_width>
diff --git a/builddir/startup/EMU.cmd b/builddir/startup/EMU.cmd
index 5a32246ebc339c072f644e16b5c04dab7ba1300b..2ee21045d3eed4480dfadb11aea94c5bd8c43934 100644
--- a/builddir/startup/EMU.cmd
+++ b/builddir/startup/EMU.cmd
@@ -9,6 +9,7 @@ require dataacquisition,1.0.1
 require emu,catane
 require emu-motor-test,catane
 require tpmac,3.11.2
+require pvarchiving, catane
 
 
 ### MACROS ###
@@ -18,6 +19,9 @@ epicsEnvSet("PMACPORT",   "GEOBRICK_ASYN")
 epicsEnvSet("MOTOR_PORT", "pmac1" )
 epicsEnvSet("NB_AXES", "1" )
 
+# ARCHIVE macros #
+epicsEnvSet("ARCHIVE-MACRO","LNS-ISRC-010:PBI-EM")
+
 # Motor Macros
 epicsEnvSet("EGU",       "mm"   )
 epicsEnvSet("DIR",       "Pos"  )
@@ -132,8 +136,17 @@ dbLoadRecords("EMU.db", "DEVICE=$(SCANPREFIX), SCAN_SLIT=$(SCAN_SLIT), SCAN_EF=$
 
 #
 # Init ETHERCAT module
+#
+
 ecat2configure(0,500,1,1)
 
+#
+# Archive module
+#
+
+ArchiveConfigure("$(REQUIRE_pvarchiving_PATH)","10.10.0.11:17665")
+dbLoadRecords("PVArchiving.template",PREFIX=$(ARCHIVE-MACRO)) 
+
 
 #############################################################################
 ######################### iocInit ###########################################
@@ -245,4 +258,9 @@ dbpf LNS-ISRC-010:PBI-EM-HV1:VoltR:AVG.ADEL -1
 dbpf LNS-ISRC-010:PBI-EM-HV2:VoltR:AVG.MDEL -1
 dbpf LNS-ISRC-010:PBI-EM-HV2:VoltR:AVG.ADEL -1
 
+############################################################
+################### START ARCHIVE ##########################
+############################################################
 
+dbpf $(ARCHIVE-MACRO):PVS "LNS-ISRC-010:PBI-EM-HV1:VoltR,LNS-ISRC-010:PBI-EM-HV2:VoltR,LNS-ISRC-010:PBI-EMV-FC:CurrR")
+dbpf $(ARCHIVE-MACRO):Archive 0
diff --git a/opi/EMU.opi b/opi/EMU.opi
index 9422d067a1b7fca9aaf9c574a8620aac947496e1..3eeabaaf608c8e79e2304a5d24d27afd871e088e 100644
--- a/opi/EMU.opi
+++ b/opi/EMU.opi
@@ -3554,7 +3554,15 @@ $(pv_value)</tooltip>
         <wuid>1e771979:1565068c2e3:-2a01</wuid>
         <pv_value />
         <text>START</text>
-        <scripts />
+        <scripts>
+          <path pathString="EmbeddedJs" checkConnect="true" sfe="false" seoe="false">
+            <scriptName>StartArchiving</scriptName>
+            <scriptText><![CDATA[importPackage(Packages.org.csstudio.opibuilder.scriptUtil);
+if(PVUtil.getDouble(pvs[0])==1){pvs[1].setValue(1);}]]></scriptText>
+            <pv trig="true">${PREFIX_SCAN}:$(NAME_MTR).EXSC</pv>
+            <pv trig="false">LNS-ISRC-010:PBI-EM:Archive</pv>
+          </path>
+        </scripts>
         <border_alarm_sensitive>false</border_alarm_sensitive>
         <height>55</height>
         <border_width>2</border_width>
diff --git a/src/EMU_MTR-HOME_AUTO.st b/src/EMU_MTR-HOME_AUTO.st
index aa1dc426ba218418dc1d9ae6e07a5f2478e9c7fc..2b345f2cd65d8a4743324a51343782057bf1d390 100644
--- a/src/EMU_MTR-HOME_AUTO.st
+++ b/src/EMU_MTR-HOME_AUTO.st
@@ -9,6 +9,11 @@ program homeMtrAuto
 %%#include <string.h>
 %%#include <stdlib.h>
 
+/***** ARCHIVE ****/
+short ARCHIVING;
+assign ARCHIVING to "LNS-ISRC-010:PBI-EM:Archive";
+monitor ARCHIVING;
+
 /**** MTR PV ******/
 short HOMCPTFLAG;
 assign HOMCPTFLAG to "{PMACPREFIX}:{MOTOR_NAME1}-HOMCPTFLAG";
@@ -131,8 +136,17 @@ ss ss1
 				pvPut(homeSTART);
 				brakeMtrCMD=0;
 				pvPut(brakeMtrCMD);
+				}state stopArchiving
+           }
+ 
+ 	state stopArchiving
+		   {
+		   when(delay(1.0))
+				{       
+				printf("\nStop Archiving\n"); 
+           		ARCHIVING=0;
+				pvPut(ARCHIVING);
 				}state init
            }
-
 }
 
diff --git a/startup/EMU.cmd b/startup/EMU.cmd
index 5a32246ebc339c072f644e16b5c04dab7ba1300b..2ee21045d3eed4480dfadb11aea94c5bd8c43934 100644
--- a/startup/EMU.cmd
+++ b/startup/EMU.cmd
@@ -9,6 +9,7 @@ require dataacquisition,1.0.1
 require emu,catane
 require emu-motor-test,catane
 require tpmac,3.11.2
+require pvarchiving, catane
 
 
 ### MACROS ###
@@ -18,6 +19,9 @@ epicsEnvSet("PMACPORT",   "GEOBRICK_ASYN")
 epicsEnvSet("MOTOR_PORT", "pmac1" )
 epicsEnvSet("NB_AXES", "1" )
 
+# ARCHIVE macros #
+epicsEnvSet("ARCHIVE-MACRO","LNS-ISRC-010:PBI-EM")
+
 # Motor Macros
 epicsEnvSet("EGU",       "mm"   )
 epicsEnvSet("DIR",       "Pos"  )
@@ -132,8 +136,17 @@ dbLoadRecords("EMU.db", "DEVICE=$(SCANPREFIX), SCAN_SLIT=$(SCAN_SLIT), SCAN_EF=$
 
 #
 # Init ETHERCAT module
+#
+
 ecat2configure(0,500,1,1)
 
+#
+# Archive module
+#
+
+ArchiveConfigure("$(REQUIRE_pvarchiving_PATH)","10.10.0.11:17665")
+dbLoadRecords("PVArchiving.template",PREFIX=$(ARCHIVE-MACRO)) 
+
 
 #############################################################################
 ######################### iocInit ###########################################
@@ -245,4 +258,9 @@ dbpf LNS-ISRC-010:PBI-EM-HV1:VoltR:AVG.ADEL -1
 dbpf LNS-ISRC-010:PBI-EM-HV2:VoltR:AVG.MDEL -1
 dbpf LNS-ISRC-010:PBI-EM-HV2:VoltR:AVG.ADEL -1
 
+############################################################
+################### START ARCHIVE ##########################
+############################################################
 
+dbpf $(ARCHIVE-MACRO):PVS "LNS-ISRC-010:PBI-EM-HV1:VoltR,LNS-ISRC-010:PBI-EM-HV2:VoltR,LNS-ISRC-010:PBI-EMV-FC:CurrR")
+dbpf $(ARCHIVE-MACRO):Archive 0