diff --git a/dynamixel_base/src/dynamixel_master.c b/dynamixel_base/src/dynamixel_master.c
index c7c200f620b07af59727eb36dd12cc32910e79b3..02251010c1890f5d994542a0106ef66c89f76880 100644
--- a/dynamixel_base/src/dynamixel_master.c
+++ b/dynamixel_base/src/dynamixel_master.c
@@ -184,7 +184,7 @@ unsigned char dyn_master_wait_reception(TDynamixelMaster *master)
   }
   else
   {
-    if(dyn2_check_checksum(master->rx_buffer)==0xFF)
+    if(dyn2_check_checksum(master->rx_buffer)==0x01)
       return dyn2_get_status_error(master->rx_buffer);
     else
       return DYN_CHECKSUM_ERROR;
diff --git a/dynamixel_base/src/dynamixel_slave.c b/dynamixel_base/src/dynamixel_slave.c
index 0dc791c52a28029911f0ed276dabb26472e92796..69fb61323b4b43c8da4b0f75f8d502a0d787cfd8 100644
--- a/dynamixel_base/src/dynamixel_slave.c
+++ b/dynamixel_base/src/dynamixel_slave.c
@@ -265,7 +265,7 @@ void dyn_v1_slave_loop(TDynamixelSlave *slave)
     }
     else// the packet is addressed to another device, so relay it
     {
-      if(slave->on_relay(slave->version,slave->rx_buffer,slave->tx_buffer))
+      if(slave->on_relay(slave->version,slave->rx_buffer,slave->tx_buffer)==DYN_SUCCESS)
       {
         // set the tx mode, if necessary
         slave->set_tx_mode();
@@ -414,12 +414,12 @@ void dyn_v2_slave_loop(TDynamixelSlave *slave)
     }
     else// the packet is addressed to another device, so relay it
     {
-      if(slave->on_relay(slave->version,slave->rx_buffer,slave->tx_buffer))
+      if(slave->on_relay(slave->version,slave->rx_buffer,slave->tx_buffer)==DYN_SUCCESS)
       {
         // set the tx mode, if necessary
         slave->set_tx_mode();
         // start transmission by DMA
-        comm_send_dma(slave->comm_dev,slave->tx_buffer,dyn_get_length(slave->tx_buffer)+8);
+        comm_send_dma(slave->comm_dev,slave->tx_buffer,dyn2_get_length(slave->tx_buffer)+8);
       }
     }
   }