(phixonline)--> function tz(atom a) -- trim trailing zeroes and decimal point string res = sprintf("%16f",a) for i=length(res) to 1 by -1 do integer ch = res[i] if ch='0' or ch='.' then res[i] = ' ' end if if ch!='0' then exit end if end for return res end function procedure test(atom b1, b2) atom diff = mod(b2-b1,360) diff -= iff(diff>180?360:0) printf(1,"%s %s %s\n",{tz(b1),tz(b2),tz(diff)}) end procedure puts(1," b1 b2 diff\n") puts(1,"---------------- ---------------- ----------------\n") test(20,45) test(-45,45) test(-85,90) test(-95,90) test(-45,125) test(-45,145) test(29.4803,-88.6381) test(-78.3251,-159.036) test(-70099.74233810938,29840.67437876723) test(-165313.6666297357,33693.9894517456) test(1174.8380510598456,-154146.66490124757) test(60175.77306795546,42213.07192354373)