diff --git a/src/DataVampire.cpp b/src/DataVampire.cpp
index b33ef9795982395ca00ca162ecf8a789020ad71a..b06b77dd42a2181e9c1125719ef0006b746db051 100644
--- a/src/DataVampire.cpp
+++ b/src/DataVampire.cpp
@@ -89,6 +89,7 @@
 //  Height                 |  Tango::DevLong	Scalar
 //  VerPosStd              |  Tango::DevDouble	Scalar
 //  EnablePolling          |  Tango::DevBoolean	Scalar
+//  BackgroundSamples      |  Tango::DevLong	Scalar
 //  RoiParam               |  Tango::DevLong	Spectrum  ( max = 4)
 //  Spectrum               |  Tango::DevDouble	Spectrum  ( max = 1000000)
 //  HorBackground          |  Tango::DevDouble	Spectrum  ( max = 1000000)
@@ -193,6 +194,7 @@ void DataVampire::delete_device()
 	delete[] attr_Height_read;
 	delete[] attr_VerPosStd_read;
 	delete[] attr_EnablePolling_read;
+	delete[] attr_BackgroundSamples_read;
 	delete[] attr_RoiParam_read;
 	delete[] attr_Spectrum_read;
 	delete[] attr_HorBackground_read;
@@ -238,6 +240,7 @@ void DataVampire::init_device()
 	attr_Height_read = new Tango::DevLong[1];
 	attr_VerPosStd_read = new Tango::DevDouble[1];
 	attr_EnablePolling_read = new Tango::DevBoolean[1];
+	attr_BackgroundSamples_read = new Tango::DevLong[1];
 	attr_RoiParam_read = new Tango::DevLong[4];
 	attr_Spectrum_read = new Tango::DevDouble[1000000];
 	attr_HorBackground_read = new Tango::DevDouble[1000000];
@@ -259,6 +262,7 @@ void DataVampire::init_device()
 	*attr_PollingSamples_read = 10;
 	*attr_PollingPeriod_read = 500;
 	*attr_EnablePolling_read = false;
+	*attr_BackgroundSamples_read = 0;
 
 	num_rows_image = 0;
 	num_cols_image = 0;
@@ -1183,6 +1187,44 @@ void DataVampire::write_EnablePolling(Tango::WAttribute &attr)
 	/*----- PROTECTED REGION END -----*/	//	DataVampire::write_EnablePolling
 }
 //--------------------------------------------------------
+/**
+ *	Read attribute BackgroundSamples related method
+ *	Description: 0 to disable
+ *
+ *	Data type:	Tango::DevLong
+ *	Attr type:	Scalar
+ */
+//--------------------------------------------------------
+void DataVampire::read_BackgroundSamples(Tango::Attribute &attr)
+{
+	DEBUG_STREAM << "DataVampire::read_BackgroundSamples(Tango::Attribute &attr) entering... " << endl;
+	/*----- PROTECTED REGION ID(DataVampire::read_BackgroundSamples) ENABLED START -----*/
+	//	Set the attribute value
+	attr.set_value(attr_BackgroundSamples_read);
+	
+	/*----- PROTECTED REGION END -----*/	//	DataVampire::read_BackgroundSamples
+}
+//--------------------------------------------------------
+/**
+ *	Write attribute BackgroundSamples related method
+ *	Description: 0 to disable
+ *
+ *	Data type:	Tango::DevLong
+ *	Attr type:	Scalar
+ */
+//--------------------------------------------------------
+void DataVampire::write_BackgroundSamples(Tango::WAttribute &attr)
+{
+	DEBUG_STREAM << "DataVampire::write_BackgroundSamples(Tango::WAttribute &attr) entering... " << endl;
+	//	Retrieve write value
+	Tango::DevLong	w_val;
+	attr.get_write_value(w_val);
+	/*----- PROTECTED REGION ID(DataVampire::write_BackgroundSamples) ENABLED START -----*/
+	*attr_BackgroundSamples_read = w_val;	
+	
+	/*----- PROTECTED REGION END -----*/	//	DataVampire::write_BackgroundSamples
+}
+//--------------------------------------------------------
 /**
  *	Read attribute RoiParam related method
  *	Description: 
@@ -2781,9 +2823,10 @@ void DataVampire::store_circ_data(int32_t mode, int32_t num_samples, int32_t bn_
 	std::vector<std::string> cmd_output_value_str;
 
 	cmd_input_value.push_back(mode);
+
 	// get last mode
-	if (mode == 0) {
-		cmd_input_value.push_back(num_samples);
+	if (mode == 0) {	
+		cmd_input_value.push_back((double)num_samples);
 		// simulate the bunch number for store_array_2D function
 		bn_start = last_bn + 1;
 		bn_end = last_bn + num_samples; 
@@ -2794,8 +2837,8 @@ void DataVampire::store_circ_data(int32_t mode, int32_t num_samples, int32_t bn_
 	}
 	// get data from bn_start to bn_end
 	else if (mode == 1) {
-		cmd_input_value.push_back(bn_start);	
-		cmd_input_value.push_back(bn_end);		
+		cmd_input_value.push_back((double)bn_start);	
+		cmd_input_value.push_back((double)bn_end);				
 	}
 	else {
 		INFO_STREAM << "Not supported mode " << mode << endl;
@@ -2809,11 +2852,15 @@ void DataVampire::store_circ_data(int32_t mode, int32_t num_samples, int32_t bn_
 	if (bn_end < bn_start) {	
 		return;
 	}
+
+	if (*attr_BackgroundSamples_read > 0) {
+		cmd_input_value.push_back((double)*attr_BackgroundSamples_read);
+	}	
 	
 	if ((*attr_PostAcqRoi_read) == false) {
 		// add ROI info to params
 		for (unsigned int i = 0; i < roi_dim; i++) {
-			cmd_input_value.push_back(attr_RoiParam_read[i]);
+			cmd_input_value.push_back((double)attr_RoiParam_read[i]);
 		}	
 	}	
 
diff --git a/src/DataVampire.h b/src/DataVampire.h
index 678fbb5097f417a3f0b483bffe6d09eb8847a44a..e17aad84e9a7aaa9d5a22867a170a60b14f4de55 100644
--- a/src/DataVampire.h
+++ b/src/DataVampire.h
@@ -141,6 +141,7 @@ public:
 	Tango::DevLong	*attr_Height_read;
 	Tango::DevDouble	*attr_VerPosStd_read;
 	Tango::DevBoolean	*attr_EnablePolling_read;
+	Tango::DevLong	*attr_BackgroundSamples_read;
 	Tango::DevLong	*attr_RoiParam_read;
 	Tango::DevDouble	*attr_Spectrum_read;
 	Tango::DevDouble	*attr_HorBackground_read;
@@ -397,6 +398,16 @@ public:
 	virtual void read_EnablePolling(Tango::Attribute &attr);
 	virtual void write_EnablePolling(Tango::WAttribute &attr);
 	virtual bool is_EnablePolling_allowed(Tango::AttReqType type);
+/**
+ *	Attribute BackgroundSamples related methods
+ *	Description: 0 to disable
+ *
+ *	Data type:	Tango::DevLong
+ *	Attr type:	Scalar
+ */
+	virtual void read_BackgroundSamples(Tango::Attribute &attr);
+	virtual void write_BackgroundSamples(Tango::WAttribute &attr);
+	virtual bool is_BackgroundSamples_allowed(Tango::AttReqType type);
 /**
  *	Attribute RoiParam related methods
  *	Description: 
diff --git a/src/DataVampire.xmi b/src/DataVampire.xmi
index e078e9766f5df538c6b695f0b96d8019f2a3aca3..a5acfdda16659d685c15a35ce8274d49ecece9fe 100644
--- a/src/DataVampire.xmi
+++ b/src/DataVampire.xmi
@@ -284,6 +284,14 @@
       <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
       <properties description="" label="" unit="" standardUnit="" displayUnit="" format="" maxValue="" minValue="" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
     </attributes>
+    <attributes name="BackgroundSamples" attType="Scalar" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="" maxY="" memorized="true" memorizedAtInit="true" allocReadMember="true" isDynamic="false">
+      <dataType xsi:type="pogoDsl:IntType"/>
+      <changeEvent fire="false" libCheckCriteria="false"/>
+      <archiveEvent fire="false" libCheckCriteria="false"/>
+      <dataReadyEvent fire="false" libCheckCriteria="true"/>
+      <status abstract="false" inherited="false" concrete="true" concreteHere="true"/>
+      <properties description="0 to disable" label="" unit="" standardUnit="" displayUnit="" format="%d" maxValue="9999" minValue="-1" maxAlarm="" minAlarm="" maxWarning="" minWarning="" deltaTime="" deltaValue=""/>
+    </attributes>
     <attributes name="RoiParam" attType="Spectrum" rwType="READ_WRITE" displayLevel="OPERATOR" polledPeriod="0" maxX="4" maxY="" allocReadMember="true" isDynamic="false">
       <dataType xsi:type="pogoDsl:IntType"/>
       <changeEvent fire="false" libCheckCriteria="false"/>
diff --git a/src/DataVampireClass.cpp b/src/DataVampireClass.cpp
index 380de52c757c9cc1558b748f34c38a0b1c2f4cdc..434227f81f018fa87952818029a182986a5ad3ce 100644
--- a/src/DataVampireClass.cpp
+++ b/src/DataVampireClass.cpp
@@ -1011,6 +1011,31 @@ void DataVampireClass::attribute_factory(vector<Tango::Attr *> &att_list)
 	enablepolling->set_memorized_init(true);
 	att_list.push_back(enablepolling);
 
+	//	Attribute : BackgroundSamples
+	BackgroundSamplesAttrib	*backgroundsamples = new BackgroundSamplesAttrib();
+	Tango::UserDefaultAttrProp	backgroundsamples_prop;
+	backgroundsamples_prop.set_description("0 to disable");
+	//	label	not set for BackgroundSamples
+	//	unit	not set for BackgroundSamples
+	//	standard_unit	not set for BackgroundSamples
+	//	display_unit	not set for BackgroundSamples
+	backgroundsamples_prop.set_format("%d");
+	backgroundsamples_prop.set_max_value("9999");
+	backgroundsamples_prop.set_min_value("-1");
+	//	max_alarm	not set for BackgroundSamples
+	//	min_alarm	not set for BackgroundSamples
+	//	max_warning	not set for BackgroundSamples
+	//	min_warning	not set for BackgroundSamples
+	//	delta_t	not set for BackgroundSamples
+	//	delta_val	not set for BackgroundSamples
+	
+	backgroundsamples->set_default_properties(backgroundsamples_prop);
+	//	Not Polled
+	backgroundsamples->set_disp_level(Tango::OPERATOR);
+	backgroundsamples->set_memorized();
+	backgroundsamples->set_memorized_init(true);
+	att_list.push_back(backgroundsamples);
+
 	//	Attribute : RoiParam
 	RoiParamAttrib	*roiparam = new RoiParamAttrib();
 	Tango::UserDefaultAttrProp	roiparam_prop;
diff --git a/src/DataVampireClass.h b/src/DataVampireClass.h
index b203327e5a38c84a73d1f7ddab295ee276c696cb..a2d80b514000f2fa16a7a92190597b8f4cda38aa 100644
--- a/src/DataVampireClass.h
+++ b/src/DataVampireClass.h
@@ -327,6 +327,21 @@ public:
 		{return (static_cast<DataVampire *>(dev))->is_EnablePolling_allowed(ty);}
 };
 
+//	Attribute BackgroundSamples class definition
+class BackgroundSamplesAttrib: public Tango::Attr
+{
+public:
+	BackgroundSamplesAttrib():Attr("BackgroundSamples",
+			Tango::DEV_LONG, Tango::READ_WRITE) {};
+	~BackgroundSamplesAttrib() {};
+	virtual void read(Tango::DeviceImpl *dev,Tango::Attribute &att)
+		{(static_cast<DataVampire *>(dev))->read_BackgroundSamples(att);}
+	virtual void write(Tango::DeviceImpl *dev,Tango::WAttribute &att)
+		{(static_cast<DataVampire *>(dev))->write_BackgroundSamples(att);}
+	virtual bool is_allowed(Tango::DeviceImpl *dev,Tango::AttReqType ty)
+		{return (static_cast<DataVampire *>(dev))->is_BackgroundSamples_allowed(ty);}
+};
+
 //	Attribute RoiParam class definition
 class RoiParamAttrib: public Tango::SpectrumAttr
 {
diff --git a/src/DataVampireStateMachine.cpp b/src/DataVampireStateMachine.cpp
index 37bcec4bfc6e559549560bfc37f34ab769f26ba9..18d3bf7251b7c706847c7d38e79b4c1ff5c0621b 100644
--- a/src/DataVampireStateMachine.cpp
+++ b/src/DataVampireStateMachine.cpp
@@ -482,6 +482,26 @@ bool DataVampire::is_EnablePolling_allowed(TANGO_UNUSED(Tango::AttReqType type))
 	return true;
 }
 
+//--------------------------------------------------------
+/**
+ *	Method      : DataVampire::is_BackgroundSamples_allowed()
+ *	Description : Execution allowed for BackgroundSamples attribute
+ */
+//--------------------------------------------------------
+bool DataVampire::is_BackgroundSamples_allowed(TANGO_UNUSED(Tango::AttReqType type))
+{
+	//	Not any excluded states for BackgroundSamples attribute in Write access.
+	/*----- PROTECTED REGION ID(DataVampire::BackgroundSamplesStateAllowed_WRITE) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	DataVampire::BackgroundSamplesStateAllowed_WRITE
+
+	//	Not any excluded states for BackgroundSamples attribute in read access.
+	/*----- PROTECTED REGION ID(DataVampire::BackgroundSamplesStateAllowed_READ) ENABLED START -----*/
+	
+	/*----- PROTECTED REGION END -----*/	//	DataVampire::BackgroundSamplesStateAllowed_READ
+	return true;
+}
+
 //--------------------------------------------------------
 /**
  *	Method      : DataVampire::is_RoiParam_allowed()
diff --git a/src/acqthread.cpp b/src/acqthread.cpp
index 98e7637b3463a527865f7bfc745b53b21498546f..7ef6f4d233d7a44bdc826e4ad569c77bdee964ce 100644
--- a/src/acqthread.cpp
+++ b/src/acqthread.cpp
@@ -31,6 +31,7 @@ void *acqthread::run_undetached(void *)
 			try {
 				myobj->mutex->lock();
 				if (myobj->bn_device) {
+					
 					myobj->bn_device->read_attribute(myobj->bn_attr_name) >> bunch_number;
 					int32_t bn_start = myobj->last_bn + 1;
 					int32_t bn_end = bunch_number - margin;