diff --git a/pom.xml b/pom.xml
index b7d84d94c0209743d71cb076f12bbf4bf3a2b557..103e57f9dc64ba2907a5eeb41aa88a65defe8681 100644
--- a/pom.xml
+++ b/pom.xml
@@ -9,7 +9,7 @@
    
    <groupId>fr.soleil.device</groupId>
    <artifactId>PulseCounting-${aol}-${mode}</artifactId>
-   <version>2.0.1-SNAPSHOT</version>
+   <version>2.0.1</version>
    
    <packaging>nar</packaging>
    <name>PulseCounting</name>
@@ -56,7 +56,7 @@
 			<dependency>
 				<groupId>fr.soleil.lib</groupId>
 				<artifactId>NexusCPPV2-${aol}-${library}-${mode}</artifactId>
-				<version>2.3.1</version>
+				<version>2.3.2</version>
 			</dependency>
    </dependencies>
    <scm>
diff --git a/src/BufferedCounterDt.cpp b/src/BufferedCounterDt.cpp
index 176f3831b11c1778b6b2274018ea013520d7a6ac..386b9d59576d559d1dd2e6991f80a57aa93ba627 100644
--- a/src/BufferedCounterDt.cpp
+++ b/src/BufferedCounterDt.cpp
@@ -248,6 +248,10 @@ void BufferedCounterDt::handle_scaled_buffer(ni660Xsl::InScaledBuffer* buffer, l
 			}
 			DEBUG_STREAM << "NB to copy : " << nb_to_copy << endl;
 
+			// add number to copy to current data
+			data.capacity(data.length() + nb_to_copy, true);
+			data.force_length(data.length() + nb_to_copy);
+
       // tempo buffer for storage
       RawData_t bufNx;
       if (data_to_be_stored)
@@ -329,15 +333,25 @@ void BufferedCounterDt::startCnt()
     // check if infinite mode
     if (this->m_cfg.acq.samplesNumber == 0)
     {
-      // set data length to buffer depth
+      // set data length & capacity to buffer depth
 	    this->m_data.capacity(this->m_cfg.acq.bufferDepth);
 	    this->m_data.force_length(this->m_cfg.acq.bufferDepth);
     }
     else
     {
-      // set data length to samples nber
-	    this->m_data.capacity(this->m_cfg.acq.samplesNumber);
-	    this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      // check if continuous mode
+      if (this->m_cfg.acq.continuousAcquisition)
+      {
+        // set data length & capacity to samples nber
+	      this->m_data.capacity(this->m_cfg.acq.samplesNumber);
+	      this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      }
+      else
+      {
+        // set data capacity & length to 0
+	      this->m_data.capacity(0);
+	      this->m_data.force_length(0);
+      }
     }
 	  this->m_data.fill(yat::IEEE_NAN);
 
diff --git a/src/BufferedCounterEvt.cpp b/src/BufferedCounterEvt.cpp
index 0ab68ba73f8c66d77b7353d3b1bc1da9cd409b8c..f62e115dd43810abb099e829236427c522f5bd91 100644
--- a/src/BufferedCounterEvt.cpp
+++ b/src/BufferedCounterEvt.cpp
@@ -264,6 +264,10 @@ void BufferedCounterEvt::handle_raw_buffer(ni660Xsl::InRawBuffer* buffer, long&
 			}
 			DEBUG_STREAM << "NB to copy : " << nb_to_copy << endl;
 
+      // add number to copy to current data
+	  data.capacity(data.length() + nb_to_copy, true);
+	  data.force_length(data.length() + nb_to_copy);
+
       // tempo buffer for storage
       RawData_t bufNx;
       if (data_to_be_stored)
@@ -362,15 +366,25 @@ void BufferedCounterEvt::startCnt()
     // check if infinite mode
     if (this->m_cfg.acq.samplesNumber == 0)
     {
-      // set data length to buffer depth
-	    this->m_data.capacity(this->m_cfg.acq.bufferDepth);
+      // set data length & capacity to buffer depth
+	    this->m_data.capacity(this->m_cfg.acq.bufferDepth); 
 	    this->m_data.force_length(this->m_cfg.acq.bufferDepth);
     }
     else
     {
-      // set data length to samples nber
-	    this->m_data.capacity(this->m_cfg.acq.samplesNumber);
-	    this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      // check if continuous mode
+      if (this->m_cfg.acq.continuousAcquisition)
+      {
+        // set data length & capacity to samples nber
+	      this->m_data.capacity(this->m_cfg.acq.samplesNumber);
+	      this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      }
+      else
+      {
+        // set data capacity & length to 0
+	      this->m_data.capacity(0);
+	      this->m_data.force_length(0);
+      }
     }
     this->m_data.fill(yat::IEEE_NAN);
 
diff --git a/src/BufferedCounterPeriod.cpp b/src/BufferedCounterPeriod.cpp
index 1cb9777efe46e14b31dfdae4ffd33ad6d41ed948..0ade7531124d52b6fe6601e9360dab62636c8d32 100644
--- a/src/BufferedCounterPeriod.cpp
+++ b/src/BufferedCounterPeriod.cpp
@@ -249,6 +249,10 @@ void BufferedCounterPeriod::handle_scaled_buffer(ni660Xsl::InScaledBuffer* buffe
 			}
 			DEBUG_STREAM << "NB to copy : " << nb_to_copy << endl;
 
+			// add number to copy to current data
+			data.capacity(data.length() + nb_to_copy, true);
+			data.force_length(data.length() + nb_to_copy);
+			
       // tempo buffer for storage
       RawData_t bufNx;
       if (data_to_be_stored)
@@ -330,15 +334,25 @@ void BufferedCounterPeriod::startCnt()
     // check if infinite mode
     if (this->m_cfg.acq.samplesNumber == 0)
     {
-      // set data length to buffer depth
+      // set data length & capacity to buffer depth
 	    this->m_data.capacity(this->m_cfg.acq.bufferDepth);
 	    this->m_data.force_length(this->m_cfg.acq.bufferDepth);
     }
     else
     {
-      // set data length to samples nber
-	    this->m_data.capacity(this->m_cfg.acq.samplesNumber);
-	    this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      // check if continuous mode
+      if (this->m_cfg.acq.continuousAcquisition)
+      {
+        // set data length & capacity to samples nber
+	      this->m_data.capacity(this->m_cfg.acq.samplesNumber);
+	      this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      }
+      else
+      {
+        // set data capacity & length to 0
+	      this->m_data.capacity(0);
+	      this->m_data.force_length(0);
+      }
     }
 	  this->m_data.fill(yat::IEEE_NAN);
 
diff --git a/src/BufferedCounterPos.cpp b/src/BufferedCounterPos.cpp
index ff55b6698980aecd24d6a20e61959ee12329a044..7762b1253482760911ce1df4440f9014ab7dc3ae 100644
--- a/src/BufferedCounterPos.cpp
+++ b/src/BufferedCounterPos.cpp
@@ -296,6 +296,10 @@ void BufferedCounterPos::handle_scaled_buffer(ni660Xsl::InScaledBuffer* buffer,
 			}
 			DEBUG_STREAM << "NB to copy : " << nb_to_copy << endl;
 
+			// add number to copy to current data
+			pos.capacity(pos.length() + nb_to_copy, true);
+			pos.force_length(pos.length() + nb_to_copy);
+			
       // tempo buffer for storage
       RawData_t bufNx;
       if (data_to_be_stored)
@@ -397,15 +401,25 @@ void BufferedCounterPos::startCnt()
     // check if infinite mode
     if (this->m_cfg.acq.samplesNumber == 0)
     {
-      // set data length to buffer depth
+      // set data length & capacity to buffer depth
 	    this->m_data.capacity(this->m_cfg.acq.bufferDepth);
 	    this->m_data.force_length(this->m_cfg.acq.bufferDepth);
     }
     else
     {
-      // set data length to samples nber
-	    this->m_data.capacity(this->m_cfg.acq.samplesNumber);
-	    this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      // check if continuous mode
+      if (this->m_cfg.acq.continuousAcquisition)
+      {
+        // set data length & capacity to samples nber
+	      this->m_data.capacity(this->m_cfg.acq.samplesNumber);
+	      this->m_data.force_length(this->m_cfg.acq.samplesNumber);
+      }
+      else
+      {
+        // set data capacity & length to 0
+	      this->m_data.capacity(0);
+	      this->m_data.force_length(0);
+      }
     }
 		this->m_data.fill(yat::IEEE_NAN);