need to use llSetLinkPrimitiveParamsFast(integer link,[ PRIM_POS_LOCAL,vector position ]);
this is setting the position of the linked part offsetting its position from the root pos that is <0,0,0>
and not the region object position,
also when dealing with link sets the root link number is 1 not 0 and you dont want to use 1 in the function above.
still ne help feel free to contack me.