diff --git a/dynamixel_manager/src/dyn_manager.c b/dynamixel_manager/src/dyn_manager.c
index 99d42c5ce8439eba246f927e970b885b2a969f64..65acbd4926d8c3d8593ad8ceee10bf121f091957 100644
--- a/dynamixel_manager/src/dyn_manager.c
+++ b/dynamixel_manager/src/dyn_manager.c
@@ -361,12 +361,12 @@ void dyn_manager_start(TDynManager *manager)
 {
   scheduler_enable_channel(manager->scheduler,manager->sch_loop_ch);
   manager->running=0x01;
+  manager->stop_flag=0x00;
   manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]|=DYN_MANAGER_RUNNING;
 }
 
 void dyn_manager_stop(TDynManager *manager)
 {
-  scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch);
   manager->stop_flag=0x01;
 }
 
@@ -1101,7 +1101,7 @@ void dyn_manager_loop(TDynManager *manager)
 
   // initialize the remaining operations
   dyn_manager_lock(manager);
-  for(i=0;i<manager->num_masters;i++)
+  for(i=0;i<DYN_MANAGER_MAX_NUM_MASTERS;i++)
   {
     states[i]=start_single_ops;
     current_single_op[i]=0;
@@ -1119,7 +1119,6 @@ void dyn_manager_loop(TDynManager *manager)
       {
         if(manager->modules[i]->pre_process!=0x00000000)
           manager->modules[i]->pre_process(manager->modules[i]->data);
-        manager->modules_period_count[i]=0;
       }
     }
   }
@@ -1275,5 +1274,6 @@ void dyn_manager_loop(TDynManager *manager)
     manager->running=0x00;
     manager->memory->data[manager->ram_base_address+DYN_MANAGER_CONTROL_OFFSET]&=(~DYN_MANAGER_RUNNING);
     manager->stop_flag=0x00;
+    scheduler_disable_channel(manager->scheduler,manager->sch_loop_ch);
   }
 }