diff_bearing(b1, b2) := block( r: mod(b2-b1, 360), if r>180 then r-360 else r)$ test_bearings: [[20, 45], [-45, 45], [-85, 90], [-95, 90], [-45, 125], [-45, 145], [29.4803, -88.6381], [-78.3251, -159.036]]$ big_bearings: [[-70099.74233810938, 29840.67437876723], [-165313.6666297357, 33693.9894517456], [1174.8380510598456, -154146.66490124757], [60175.77306795546, 42213.07192354373]]$ db_unary(list) := map(lambda([l], apply(diff_bearing, l)), list)$ db_unary(test_bearings); db_unary(big_bearings);