diff --git a/src/imu.c b/src/imu.c
index e7925854577a476426157709ec5289cfbf2d830c..bbaed728d98168aec6e571a9473b1edc91b65dbc 100755
--- a/src/imu.c
+++ b/src/imu.c
@@ -258,7 +258,7 @@ void imu_accel_convert_data(uint8_t *data_in,uint8_t *data_out)
 
   for(i=0;i<3;i++)
   {
-    accel_data[i]=(data_in[i*2]+(data_in[i*2+1]<<8));
+    accel_data[i]=(int16_t)(data_in[i*2]+(data_in[i*2+1]<<8));
     data_out[i*2]=accel_data[i]%256;
     data_out[i*2+1]=accel_data[i]/256;
   }
diff --git a/src/motion_manager.c b/src/motion_manager.c
index 4d61378490962f3f53f417208d94010dcee1a4fd..709777ce8271035a18f40769eed8599aa0ecb010 100755
--- a/src/motion_manager.c
+++ b/src/motion_manager.c
@@ -149,10 +149,10 @@ void manager_balance(void)
     manager_balance_offset[R_ANKLE_PITCH]=((((int64_t)gyro_y*(int64_t)ankle_pitch_gain)/12000)>>9);    
     manager_balance_offset[L_KNEE]=((((int64_t)gyro_y*(int64_t)knee_gain)/12000)>>9);    
     manager_balance_offset[L_ANKLE_PITCH]=-((((int64_t)gyro_y*(int64_t)ankle_pitch_gain)/12000)>>9);
-    manager_balance_offset[R_HIP_ROLL]=-((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9);
-    manager_balance_offset[L_HIP_ROLL]=-((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9);
-    manager_balance_offset[R_ANKLE_ROLL]=((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9);
-    manager_balance_offset[L_ANKLE_ROLL]=((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9);
+    manager_balance_offset[R_HIP_ROLL]=((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9);
+    manager_balance_offset[L_HIP_ROLL]=((((int64_t)gyro_x*(int64_t)hip_roll_gain)/12000)>>9);
+    manager_balance_offset[R_ANKLE_ROLL]=-((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9);
+    manager_balance_offset[L_ANKLE_ROLL]=-((((int64_t)gyro_x*(int64_t)ankle_roll_gain)/12000)>>9);
   }
   // fall detection (using accelerometer)
   imu_get_accel_data(&accel_x,&accel_y,&accel_z);