diff --git a/dynamixel_base/include/dynamixel_slave.h b/dynamixel_base/include/dynamixel_slave.h
index 9254389dae21c86327d034ad9c377f0fc58c5c09..d608c9daefec8df569f50d9a0df2576b2dad8941 100644
--- a/dynamixel_base/include/dynamixel_slave.h
+++ b/dynamixel_base/include/dynamixel_slave.h
@@ -65,6 +65,11 @@ typedef struct TDynamixelSlave
    *
    */
   unsigned char rx_buffer[MAX_DYN_SLAVE_RX_BUFFER_LEN];
+  /**
+   * \brief
+   *
+   */
+  unsigned char current_packet[MAX_DYN_SLAVE_RX_BUFFER_LEN];
   /**
    * \brief
    *
diff --git a/dynamixel_base/src/dynamixel_slave.c b/dynamixel_base/src/dynamixel_slave.c
index 54937ed1472fd45ffc00ef11415febe5077d963b..881d1b8a3d1e65313500d7508f1297d15bf48dce 100644
--- a/dynamixel_base/src/dynamixel_slave.c
+++ b/dynamixel_base/src/dynamixel_slave.c
@@ -224,20 +224,20 @@ unsigned char dyn_slave_get_next_packet(TDynamixelSlave *slave,unsigned char *pa
 
 void dyn_slave_loop(TDynamixelSlave *slave)
 {
-  unsigned char send_status=0xFF,error,data_in[MAX_DYN_SLAVE_RX_BUFFER_LEN],data_out[MAX_DYN_SLAVE_RX_BUFFER_LEN];
+  unsigned char send_status=0xFF,error,data_out[MAX_DYN_SLAVE_RX_BUFFER_LEN]={0};
   unsigned short int length,i;
 
   if(slave!=0x00000000)
   {
-    while(dyn_slave_get_next_packet(slave,data_in))
+    while(dyn_slave_get_next_packet(slave,slave->current_packet))
     {
       // check address
       for(i=0;i<slave->num_slave_devices;i++)
       {
         if(slave->version==DYN_VER1)
-          send_status=dyn_v1_slave_loop(slave->slave_devices[i],data_in,&error,(unsigned char *)&length,data_out);
+          send_status=dyn_v1_slave_loop(slave->slave_devices[i],slave->current_packet,&error,(unsigned char *)&length,data_out);
         else
-          send_status=dyn_v2_slave_loop(slave->slave_devices[i],data_in,&error,&length,data_out);
+          send_status=dyn_v2_slave_loop(slave->slave_devices[i],slave->current_packet,&error,&length,data_out);
         if(send_status==0x01)
           dyn_slave_send_status_packet(slave,slave->slave_devices[i]->address,error,length,data_out,slave->slave_devices[i]->return_delay);
       }