check for under/overflow
diff --git a/MagickCore/effect.c b/MagickCore/effect.c
index 38f89c3..6b6621c 100644
--- a/MagickCore/effect.c
+++ b/MagickCore/effect.c
@@ -288,8 +288,8 @@
         center,
         j;
 
-      j=(ssize_t) ceil((double) width*(1.0-QuantumScale*
-        GetPixelIntensity(edge_image,r))-0.5);
+      j=MagickDoubleToLong(ceil((double) width*(1.0-QuantumScale*
+        GetPixelIntensity(edge_image,r))-0.5));
       if (j < 0)
         j=0;
       else
@@ -609,8 +609,8 @@
         center,
         j;
 
-      j=(ssize_t) ceil((double) width*(1.0-QuantumScale*
-        GetPixelIntensity(edge_image,r))-0.5);
+      j=MagickDoubleToLong(ceil((double) width*(1.0-QuantumScale*
+        GetPixelIntensity(edge_image,r))-0.5));
       if (j < 0)
         j=0;
       else
@@ -2402,8 +2402,10 @@
   point.y=(double) width*cos(DegreesToRadians(angle));
   for (i=0; i < (ssize_t) width; i++)
   {
-    offset[i].x=(ssize_t) ceil((double) (i*point.y)/hypot(point.x,point.y)-0.5);
-    offset[i].y=(ssize_t) ceil((double) (i*point.x)/hypot(point.x,point.y)-0.5);
+    offset[i].x=MagickDoubleToLong(ceil((double) (i*point.y)/
+      hypot(point.x,point.y)-0.5));
+    offset[i].y=MagickDoubleToLong(ceil((double) (i*point.x)/
+      hypot(point.x,point.y)-0.5));
   }
   /*
     Motion blur image.