Index: trunk/src_plugins/io_pads/read_high.c =================================================================== --- trunk/src_plugins/io_pads/read_high.c (revision 34561) +++ trunk/src_plugins/io_pads/read_high.c (revision 34562) @@ -993,14 +993,16 @@ return; } - s = atan2(y0 - cy, x0 - cx); - e = atan2(y1 - cy, x1 - cx); + /* pcb-rnd's own (unusual) arc representation */ + s = atan2(y0 - cy, -(x0 - cx)); + e = atan2(y1 - cy, -(x1 - cx)); d = e - s; - if ((d < 0) && (arcdir > 1)) + /* flip arc dir upon mismatching CW or CCW */ + if ((d < 0) && (arcdir < 0)) d = 2*M_PI + d; - else if ((d > 0) && (arcdir < 1)) - d = 2*M_PI - d; + else if ((d > 0) && (arcdir > 0)) + d = d - 2*M_PI; *starta = s; *deltaa = d;