EDIT:
mbeckish is right - this should fix it. Build up two lists with a 'cartoon-race method' - ie keep adding to a list until its total angle content exceeds the other list, then change lists and keep going. Once that's done, draw the 'smaller' one first. As this will contain at most 180 degrees it can never cross the danger point. If they're equal it doesn't matter. (It's not pretty)
define clockwiseAngles[], antiClockwiseAngles[]
define totalClockwiseAngles, totalAntiClockwiseAngles
for each angle in angles
if totalClockwiseAngles > totalAntiClockwiseAngles
totalAntiClockwiseAngles += angle
AntiClockwiseAngles.push(angle)
else
totalClockwiseAngles += angle
clockwiseAngles.push(angle)
if totalClockwiseAngles > totalAntiClockwiseAngles
// draw all anticlockwise angles
// draw all clockwise angles
else
// draw all clockwise angles
// draw all anticlockwise angles