diff --git a/magick/quantize.c b/magick/quantize.c
index cdb92e3..f498acc 100644
--- a/magick/quantize.c
+++ b/magick/quantize.c
@@ -486,29 +486,27 @@
 {
 #define AssignImageTag  "Assign/Image"
 
-  ssize_t
-    y;
-
   MagickBooleanType
     proceed;
 
   RealPixelPacket
     pixel;
 
+  register const NodeInfo
+    *node_info;
+
   register ssize_t
     i,
     x;
 
-  register const NodeInfo
-    *node_info;
-
-  ssize_t
-    count;
-
   size_t
     id,
     index;
 
+  ssize_t
+    count,
+    y;
+
   /*
     Allocate image colormap.
   */
@@ -574,6 +572,7 @@
               break;
             node_info=node_info->child[id];
           }
+          node_info=node_info->parent;
           /*
             Find closest color among siblings and their children.
           */
@@ -721,9 +720,6 @@
   CacheView
     *image_view;
 
-  ssize_t
-    y;
-
   MagickBooleanType
     proceed;
 
@@ -740,13 +736,14 @@
     pixel;
 
   size_t
-    count;
-
-  size_t
+    count,
     id,
     index,
     level;
 
+  ssize_t
+    y;
+
   /*
     Classify the first cube_info->maximum_colors colors to a tree depth of 8.
   */
@@ -1417,13 +1414,13 @@
     register IndexPacket
       *restrict indexes;
 
+    register PixelPacket
+      *restrict q;
+
     register ssize_t
       i,
       x;
 
-    register PixelPacket
-      *restrict q;
-
     q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception);
     if (q == (PixelPacket *) NULL)
       return(MagickFalse);
@@ -1492,6 +1489,7 @@
               break;
             node_info=node_info->child[id];
           }
+          node_info=node_info->parent;
           /*
             Find closest color among siblings and their children.
           */
@@ -1657,12 +1655,12 @@
       register IndexPacket
         *restrict indexes;
 
-      register ssize_t
-        i;
-
       register PixelPacket
         *restrict q;
 
+      register ssize_t
+        i;
+
       /*
         Distribute error.
       */
@@ -1705,6 +1703,7 @@
               break;
             node_info=node_info->child[id];
           }
+          node_info=node_info->parent;
           /*
             Find closest color among siblings and their children.
           */
@@ -1852,12 +1851,12 @@
     sum,
     weight;
 
-  size_t
-    length;
-
   register ssize_t
     i;
 
+  size_t
+    length;
+
   /*
     Initialize tree to describe color cube_info.
   */
@@ -2033,9 +2032,6 @@
   IndexPacket
     *indexes;
 
-  ssize_t
-    y;
-
   MagickRealType
     alpha,
     area,
@@ -2048,6 +2044,9 @@
   size_t
     index;
 
+  ssize_t
+    y;
+
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
   if (image->debug != MagickFalse)
@@ -2183,7 +2182,7 @@
 static inline ssize_t MagickRound(MagickRealType x)
 {
   /*
-   Round the fraction to nearest integer.
+    Round the fraction to nearest integer.
   */
   if (x >= 0.0)
     return((ssize_t) (x+0.5));
@@ -2205,7 +2204,7 @@
 {
 #define PosterizeImageTag  "Posterize/Image"
 #define PosterizePixel(pixel) (Quantum) (QuantumRange*(MagickRound( \
-  QuantumScale*pixel*(levels-1))/MagickMax(levels-1,1)))
+  QuantumScale*pixel*(levels-1))/(levels-1)))
 
   CacheView
     *image_view;
@@ -3085,13 +3084,13 @@
 
 static int IntensityCompare(const void *x,const void *y)
 {
-  ssize_t
-    intensity;
-
   PixelPacket
     *color_1,
     *color_2;
 
+  ssize_t
+    intensity;
+
   color_1=(PixelPacket *) x;
   color_2=(PixelPacket *) y;
   intensity=PixelIntensityToQuantum(color_1)-(ssize_t)
@@ -3111,21 +3110,19 @@
   ExceptionInfo
     *exception;
 
-  ssize_t
-    j,
-    y;
+  MagickBooleanType
+    status;
 
   PixelPacket
     *colormap;
 
-  ssize_t
-    *colormap_index;
-
   register ssize_t
     i;
 
-  MagickBooleanType
-    status;
+  ssize_t
+    *colormap_index,
+    j,
+    y;
 
   assert(image != (Image *) NULL);
   assert(image->signature == MagickSignature);
@@ -3158,12 +3155,12 @@
         register IndexPacket
           *restrict indexes;
 
-        register ssize_t
-          x;
-
         register const PixelPacket
           *restrict q;
 
+        register ssize_t
+          x;
+
         if (status == MagickFalse)
           continue;
         q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,
@@ -3234,12 +3231,12 @@
     register IndexPacket
       *restrict indexes;
 
-    register ssize_t
-      x;
-
     register const PixelPacket
       *restrict q;
 
+    register ssize_t
+      x;
+
     if (status == MagickFalse)
       continue;
     q=GetCacheViewAuthenticPixels(image_view,0,y,image->columns,1,exception);