diff --git a/dynamixel_manager/include/modules/motion_manager_registers.h b/dynamixel_manager/include/modules/motion_manager_registers.h
index 1d0bc4b1447149c7d54fc44965d395b2d0effda3..42f763f054a5eeb5dab06dc758ef3b0049b824ec 100644
--- a/dynamixel_manager/include/modules/motion_manager_registers.h
+++ b/dynamixel_manager/include/modules/motion_manager_registers.h
@@ -3,7 +3,7 @@
 
 #include "dyn_module_registers.h"
 
-#define RAM_MM_LENGTH                        (4+DYN_MANAGER_MAX_NUM_DEVICES/2)
+#define RAM_MM_LENGTH                        (4+DYN_MANAGER_MAX_NUM_DEVICES/2+2*DYN_MANAGER_MAX_NUM_DEVICES)
 
 #define MM_PRESENT_SERVOS_OFFSET             0
 #define MM_ENABLE_MODULE_OFFSET              4
@@ -11,6 +11,7 @@
   #define MM_EVEN_SER_MOD                    0x70
   #define MM_ODD_SER_EN                      0x08
   #define MM_ODD_SER_MOD                     0x07
+#define MM_CURRENT_ANGLES_OFFSET             (4+DYN_MANAGER_MAX_NUM_DEVICES/2)
 
 #define EEPROM_MM_LENGTH                     (DYN_MANAGER_MAX_NUM_DEVICES)
 
diff --git a/dynamixel_manager/src/modules/motion_manager.c b/dynamixel_manager/src/modules/motion_manager.c
index 3e5a676b5384bb71abd3ce4386a210ebcd3c3742..c542a68b79322ca9970d1ea22e9df4ffdb71b81b 100644
--- a/dynamixel_manager/src/modules/motion_manager.c
+++ b/dynamixel_manager/src/modules/motion_manager.c
@@ -97,6 +97,11 @@ void mmanager_compute_targets(TMotionManager *mmanager)
       angle=(mmanager->servo_values[i].target_angle>>9)+offsets[i]+(mmanager->servo_values[i].offset<<3);
       //>>16 from the action codification, <<7 from the manager codification
       mmanager->servo_values[i].target_value=mmanager_angle_to_value(mmanager,i,angle);
+      if(mmanager->servo_configs[i]->protocol_ver==1 || mmanager->servo_configs[i]->model!=29 || mmanager->servo_configs[i]->model!=310 || mmanager->servo_configs[i]->model!=320 || mmanager->servo_configs[i]->model!=360)// get the target value as the feedback
+      {
+        mmanager->memory->data[mmanager->ram_base_address+MM_CURRENT_ANGLES_OFFSET+i*2]=angle&0x00FF;
+        mmanager->memory->data[mmanager->ram_base_address+MM_CURRENT_ANGLES_OFFSET+i*2+1]=(angle>>8)&0x00FF;
+      }
     }
   }
 }
@@ -104,12 +109,21 @@ void mmanager_compute_targets(TMotionManager *mmanager)
 void mmanager_compute_angles(TMotionManager *mmanager)
 {
   unsigned char i;
+  short int angle;
 
   // convert the digital values to angles
   for(i=0;i<DYN_MANAGER_MAX_NUM_DEVICES;i++)
   {
     if(mmanager->servo_values[i].enabled)// servo is enabled and present
-      mmanager->servo_values[i].current_angle=(mmanager_value_to_angle(mmanager,i,mmanager->servo_values[i].current_value)<<9);
+    {
+      angle=mmanager_value_to_angle(mmanager,i,mmanager->servo_values[i].current_value);
+      mmanager->servo_values[i].current_angle=angle<<9;
+      if(mmanager->servo_configs[i]->protocol_ver==2 || mmanager->servo_configs[i]->model==29 || mmanager->servo_configs[i]->model==310 || mmanager->servo_configs[i]->model==320 || mmanager->servo_configs[i]->model==360)// get the actual feedback
+      {
+        mmanager->memory->data[mmanager->ram_base_address+MM_CURRENT_ANGLES_OFFSET+i*2]=angle&0x00FF;
+        mmanager->memory->data[mmanager->ram_base_address+MM_CURRENT_ANGLES_OFFSET+i*2+1]=(angle>>8)&0x00FF;
+      }
+    }
   }
 }
 
@@ -207,7 +221,7 @@ void mmanager_setup(TMotionManager *mmanager)
   {
     if(mmanager->dyn_module.assigned_ids[i]==0x01)
     {
-      if(mmanager->servo_configs[i]->protocol_ver==2)
+      if(mmanager->servo_configs[i]->protocol_ver==2 || mmanager->servo_configs[i]->model==29 || mmanager->servo_configs[i]->model==310 || mmanager->servo_configs[i]->model==320 || mmanager->servo_configs[i]->model==360)// MX series with version 1 or version 2
       {
         address[num]=mmanager->servo_configs[i]->registers[current_pos].address;
         data[num]=(unsigned char *)&mmanager->servo_values[i].current_value;