Index: trunk/src/data.c =================================================================== --- trunk/src/data.c (revision 13068) +++ trunk/src/data.c (revision 13069) @@ -416,7 +416,7 @@ PCB_END_LOOP; PCB_PADSTACK_LOOP(data); { - pcb_pstk_mirror(padstack, y_offs); + pcb_pstk_mirror(padstack, y_offs, 1); } PCB_END_LOOP; PCB_SUBC_LOOP(data); Index: trunk/src/obj_pstk.c =================================================================== --- trunk/src/obj_pstk.c (revision 13068) +++ trunk/src/obj_pstk.c (revision 13069) @@ -628,7 +628,7 @@ return 0; } -void pcb_pstk_mirror(pcb_pstk_t *ps, pcb_coord_t y_offs) +void pcb_pstk_mirror(pcb_pstk_t *ps, pcb_coord_t y_offs, int swap_side) { int xmirror = ps->xmirror; pcb_pstk_change_instance(ps, NULL, NULL, NULL, &xmirror); @@ -639,6 +639,8 @@ pcb_r_delete_entry(ps->parent.data->padstack_tree, (pcb_box_t *)ps); ps->y = PCB_SWAP_Y(ps->y) + y_offs; + if ((swap_side) && (ps->rot != 0)) + ps->rot = -ps->rot; pcb_pstk_bbox(ps); if (ps->parent.data->padstack_tree != NULL) Index: trunk/src/obj_pstk.h =================================================================== --- trunk/src/obj_pstk.h (revision 13068) +++ trunk/src/obj_pstk.h (revision 13069) @@ -161,8 +161,8 @@ void pcb_pstk_proto_del_shape(pcb_pstk_proto_t *proto, pcb_layer_type_t lyt, pcb_layer_combining_t comb); void pcb_pstk_proto_del_shape_idx(pcb_pstk_proto_t *proto, int idx); -/* Mirror a padstack (useful for sending to the other side) */ -void pcb_pstk_mirror(pcb_pstk_t *ps, pcb_coord_t y_offs); +/* Mirror a padstack (useful for sending to the other side - set swap_side to 1 in that case) */ +void pcb_pstk_mirror(pcb_pstk_t *ps, pcb_coord_t y_offs, int swap_side); /*** hash ***/ unsigned int pcb_pstk_hash(const pcb_pstk_proto_t *p);