...
diff --git a/MagickCore/draw.c b/MagickCore/draw.c
index ec347a6..0063fde 100644
--- a/MagickCore/draw.c
+++ b/MagickCore/draw.c
@@ -1674,7 +1674,8 @@
 {
   double
     delta,
-    step;
+    step,
+    y;
 
   PointInfo
     angle;
@@ -1686,8 +1687,11 @@
   step=MagickPI/8.0;
   if ((delta >= 0.0) && (delta < (MagickPI/8.0)))
     step=MagickPI/(4.0*(MagickPI*PerceptibleReciprocal(delta)/2.0));
-  angle.x=DegreesToRadians(fmod(degrees.x,360.0));
-  angle.y=DegreesToRadians(fmod(degrees.y,360.0));
+  angle.x=DegreesToRadians(degrees.x);
+  y=degrees.y;
+  while (y < degrees.x)
+    y+=360.0;
+  angle.y=DegreesToRadians(y);
   return((size_t) floor((angle.y-angle.x)/step+0.5)+3);
 }
 
@@ -5667,7 +5671,8 @@
 {
   double
     delta,
-    step;
+    step,
+    y;
 
   PointInfo
     angle,
@@ -5686,8 +5691,11 @@
   step=MagickPI/8.0;
   if ((delta >= 0.0) && (delta < (MagickPI/8.0)))
     step=MagickPI/(4.0*(MagickPI*PerceptibleReciprocal(delta)/2.0));
-  angle.x=DegreesToRadians(fmod(degrees.x,360.0));
-  angle.y=DegreesToRadians(fmod(degrees.y,360.0));
+  angle.x=DegreesToRadians(degrees.x);
+  y=degrees.y;
+  while (y < degrees.x)
+    y+=360.0;
+  angle.y=DegreesToRadians(y);
   for (p=primitive_info; angle.x < angle.y; angle.x+=step)
   {
     point.x=cos(fmod(angle.x,DegreesToRadians(360.0)))*stop.x+start.x;