Yes, I guess something like checking if he's moving with TASK::IS_PED_STILL and waiting until he stopped should work but you can also do a sequence of actions like this:
int changePosSeq;
TASK::OPEN_SEQUENCE_TASK(&changePosSeq);
TASK::CLEAR_PED_TASKS(0, 1, 1);
TASK::TASK_FOLLOW_NAV_MESH_TO_COORD(0, guardPos.x, guardPos.y, guardPos.z, 0.8f, -1, 0.05f, 1048580, 40000.0f);
TASK::TASK_ACHIEVE_HEADING(0, guardPos.h, 1500);
TASK::TASK_START_SCENARIO_IN_PLACE_HASH(0, MICS::GET_HASH_KEY(scenario), -1, true, true, 0.0f, true);
TASK::CLOSE_SEQUENCE_TASK(changePosSeq);
TASK::TASK_PERFORM_SEQUENCE(ped, changePosSeq);
TASK::CLEAR_SEQUENCE_TASK(&changePosSeq);
I use this in my gang hideouts to make them move around and do stuff. Put zeros in the sequence in place of the ped handles, only use the actual ped in the perform sequence line.