diff --git a/src/SimulatedE2PS.cpp b/src/SimulatedE2PS.cpp
index 83025f5dad82209fb952ff50dd3f4a1d1adf3176..2dc98db46e4415398904517af0c8c2f8c026eaa2 100644
--- a/src/SimulatedE2PS.cpp
+++ b/src/SimulatedE2PS.cpp
@@ -59,7 +59,7 @@
 //  Reset         |  reset
 //  StartCycling  |  start_cycling
 //  Abort         |  abort
-//  fault         |  fault
+//  Fault         |  fault
 //================================================================
 
 //================================================================
@@ -486,24 +486,25 @@ void SimulatedE2PS::abort()
 }
 //--------------------------------------------------------
 /**
- *	Command fault related method
+ *	Command Fault related method
  * Description:  Force a simulated faulty condtion
  *
  */
 //--------------------------------------------------------
 void SimulatedE2PS::fault()
 {
-	DEBUG_STREAM << "SimulatedE2PS::fault()  - " << device_name << std::endl;
+	DEBUG_STREAM << "SimulatedE2PS::Fault()  - " << device_name << std::endl;
 	/*----- PROTECTED REGION ID(SimulatedE2PS::fault) ENABLED START -----*/
 	/* clang-format on */
 
 	//	Add your own code
+	if (get_state() == Tango::ON) return; // command is idempotent
 	_current_read = 0.0;
 	_current = 0.0;
 	_voltage = 0.0;
 	attr_current->set_write_value(_current);
-	push_change_event("current",&_current_read);
-	push_change_event("currentSet",&_current);
+	push_change_event("current", &_current_read);
+	push_change_event("currentSet", &_current);
 	set_state(Tango::FAULT);
 	push_change_event("State");
 	/* clang-format off */
diff --git a/src/SimulatedE2PS.h b/src/SimulatedE2PS.h
index e6357f429af267737be3ec019c37c8d2b01a959f..dcf88539006a9d85a81f0651ce82b43a0c285239 100644
--- a/src/SimulatedE2PS.h
+++ b/src/SimulatedE2PS.h
@@ -81,7 +81,7 @@ class SimulatedE2PS : public TANGO_BASE_CLASS
 	class cyclethread 		*cycleloop;
 	bool    thread_running;
 	bool abortflag;
-	void psdelay();
+	//void psdelay();
 	Tango::WAttribute  *attr_current;
 /* clang-format off */
 /*----- PROTECTED REGION END -----*/	//	SimulatedE2PS::Data Members
@@ -245,12 +245,12 @@ public:
 	virtual void abort();
 	virtual bool is_Abort_allowed(const CORBA::Any &any);
 	/**
-	 *	Command fault related method
+	 *	Command Fault related method
 	 * Description:  Force a simulated faulty condtion
 	 *
 	 */
 	virtual void fault();
-	virtual bool is_fault_allowed(const CORBA::Any &any);
+	virtual bool is_Fault_allowed(const CORBA::Any &any);
 
 
 	//--------------------------------------------------------
diff --git a/src/SimulatedE2PS.xmi b/src/SimulatedE2PS.xmi
index 90c8112f5b82fd47385be51b1a50a570df8b5b33..3b12b35ed6c526c2248d222ac7e6016dd7682ed6 100644
--- a/src/SimulatedE2PS.xmi
+++ b/src/SimulatedE2PS.xmi
@@ -53,6 +53,7 @@
       </argout>
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
       <excludedStates>UNKNOWN</excludedStates>
+      <excludedStates>FAULT</excludedStates>
     </commands>
     <commands name="Reset" description="Reset the powersupply to a well known state." execMethod="reset" displayLevel="OPERATOR" polledPeriod="0" isDynamic="false">
       <argin description="">
@@ -86,7 +87,7 @@
       <excludedStates>UNKNOWN</excludedStates>
       <excludedStates>FAULT</excludedStates>
     </commands>
-    <commands name="fault" description="Force a simulated faulty condtion" execMethod="fault" displayLevel="EXPERT" polledPeriod="0" isDynamic="false">
+    <commands name="Fault" description="Force a simulated faulty condtion" execMethod="fault" displayLevel="EXPERT" polledPeriod="0" isDynamic="false">
       <argin description="">
         <type xsi:type="pogoDsl:VoidType"/>
       </argin>
diff --git a/src/SimulatedE2PSClass.cpp b/src/SimulatedE2PSClass.cpp
index 32c3963b27dee164295e79fa27a2a4fc94db8c7f..26d339ec53a3fdbcf1dbc37fe39229ac5ec072d7 100644
--- a/src/SimulatedE2PSClass.cpp
+++ b/src/SimulatedE2PSClass.cpp
@@ -246,7 +246,7 @@ CORBA::Any *AbortClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CO
 
 //--------------------------------------------------------
 /**
- * method : 		faultClass::execute()
+ * method : 		FaultClass::execute()
  * description : 	method to trigger the execution of the command.
  *
  * @param	device	The device on which the command must be executed
@@ -255,9 +255,9 @@ CORBA::Any *AbortClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CO
  *	returns The command output data (packed in the Any object)
  */
 //--------------------------------------------------------
-CORBA::Any *faultClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
+CORBA::Any *FaultClass::execute(Tango::DeviceImpl *device, TANGO_UNUSED(const CORBA::Any &in_any))
 {
-	TANGO_LOG_INFO << "faultClass::execute(): arrived" << std::endl;
+	TANGO_LOG_INFO << "FaultClass::execute(): arrived" << std::endl;
 	((static_cast<SimulatedE2PS *>(device))->fault());
 	return new CORBA::Any();
 }
@@ -610,14 +610,14 @@ void SimulatedE2PSClass::command_factory()
 			Tango::OPERATOR);
 	command_list.push_back(pAbortCmd);
 
-	//	Command fault
-	faultClass	*pfaultCmd =
-		new faultClass("fault",
+	//	Command Fault
+	FaultClass	*pFaultCmd =
+		new FaultClass("Fault",
 			Tango::DEV_VOID, Tango::DEV_VOID,
 			"",
 			"",
 			Tango::EXPERT);
-	command_list.push_back(pfaultCmd);
+	command_list.push_back(pFaultCmd);
 
 	/*----- PROTECTED REGION ID(SimulatedE2PSClass::command_factory_after) ENABLED START -----*/
 	/* clang-format on */
diff --git a/src/SimulatedE2PSClass.h b/src/SimulatedE2PSClass.h
index 64d6ec14d34e63508466a2538bf8e66e4883a172..c24a21a32cab376018672a15c420088b5a4959d1 100644
--- a/src/SimulatedE2PSClass.h
+++ b/src/SimulatedE2PSClass.h
@@ -216,11 +216,11 @@ public:
 	{return (static_cast<SimulatedE2PS *>(dev))->is_Abort_allowed(any);}
 };
 
-//	Command fault class definition
-class faultClass : public Tango::Command
+//	Command Fault class definition
+class FaultClass : public Tango::Command
 {
 public:
-	faultClass(const char   *cmd_name,
+	FaultClass(const char   *cmd_name,
 	               Tango::CmdArgType in,
 				   Tango::CmdArgType out,
 				   const char        *in_desc,
@@ -228,15 +228,15 @@ public:
 				   Tango::DispLevel  level)
 	:Command(cmd_name,in,out,in_desc,out_desc, level)	{};
 
-	faultClass(const char   *cmd_name,
+	FaultClass(const char   *cmd_name,
 	               Tango::CmdArgType in,
 				   Tango::CmdArgType out)
 	:Command(cmd_name,in,out)	{};
-	~faultClass() {};
+	~FaultClass() {};
 
 	virtual CORBA::Any *execute (Tango::DeviceImpl *dev, const CORBA::Any &any);
 	virtual bool is_allowed (Tango::DeviceImpl *dev, const CORBA::Any &any)
-	{return (static_cast<SimulatedE2PS *>(dev))->is_fault_allowed(any);}
+	{return (static_cast<SimulatedE2PS *>(dev))->is_Fault_allowed(any);}
 };
 
 
diff --git a/src/SimulatedE2PSStateMachine.cpp b/src/SimulatedE2PSStateMachine.cpp
index 78614951f093c5da11ee6d5fed36016b0ed3c3b9..d2a8df9f671c82de13baf9669d3e497923214757 100644
--- a/src/SimulatedE2PSStateMachine.cpp
+++ b/src/SimulatedE2PSStateMachine.cpp
@@ -185,7 +185,8 @@ bool SimulatedE2PS::is_On_allowed(TANGO_UNUSED(const CORBA::Any &any))
 bool SimulatedE2PS::is_Off_allowed(TANGO_UNUSED(const CORBA::Any &any))
 {
 	//	Compare device state with not allowed states.
-	if (get_state()==Tango::UNKNOWN)
+	if (get_state()==Tango::UNKNOWN ||
+		get_state()==Tango::FAULT)
 	{
 	/*----- PROTECTED REGION ID(SimulatedE2PS::OffStateAllowed) ENABLED START -----*/
 	/* clang-format on */
@@ -260,17 +261,17 @@ bool SimulatedE2PS::is_Abort_allowed(TANGO_UNUSED(const CORBA::Any &any))
 
 //--------------------------------------------------------
 /**
- *	Method      : SimulatedE2PS::is_fault_allowed()
- * Description:  Execution allowed for fault attribute
+ *	Method      : SimulatedE2PS::is_Fault_allowed()
+ * Description:  Execution allowed for Fault attribute
  */
 //--------------------------------------------------------
-bool SimulatedE2PS::is_fault_allowed(TANGO_UNUSED(const CORBA::Any &any))
+bool SimulatedE2PS::is_Fault_allowed(TANGO_UNUSED(const CORBA::Any &any))
 {
-	//	Not any excluded states for fault command.
-	/*----- PROTECTED REGION ID(SimulatedE2PS::faultStateAllowed) ENABLED START -----*/
+	//	Not any excluded states for Fault command.
+	/*----- PROTECTED REGION ID(SimulatedE2PS::FaultStateAllowed) ENABLED START -----*/
 	/* clang-format on */
 	/* clang-format off */
-	/*----- PROTECTED REGION END -----*/	//	SimulatedE2PS::faultStateAllowed
+	/*----- PROTECTED REGION END -----*/	//	SimulatedE2PS::FaultStateAllowed
 	return true;
 }