diff --git a/ImageMagick.spec b/ImageMagick.spec
index 774275b..f660b02 100644
--- a/ImageMagick.spec
+++ b/ImageMagick.spec
@@ -1,5 +1,5 @@
 %define VERSION  6.5.9
-%define Patchlevel  6
+%define Patchlevel  5
 
 Name:           ImageMagick
 Version:        %{VERSION}
diff --git a/coders/cut.c b/coders/cut.c
index 18ba8e2..c14e7d5 100644
--- a/coders/cut.c
+++ b/coders/cut.c
@@ -134,9 +134,6 @@
           }
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
-        /*            if (image->previous == (Image *) NULL)
-                      if (QuantumTick(y,image->rows) != MagickFalse)
-                      ProgressMonitor(LoadImageText,image->rows-y-1,image->rows);*/
         break;
       }
     case 2:  /* Convert PseudoColor scanline. */
@@ -184,9 +181,6 @@
           }
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
-        /*         if (image->previous == (Image *) NULL)
-                   if (QuantumTick(y,image->rows) != MagickFalse)
-                   ProgressMonitor(LoadImageText,image->rows-y-1,image->rows);*/
         break;
       }
 
@@ -215,9 +209,6 @@
           }
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
-        /*         if (image->previous == (Image *) NULL)
-                   if (QuantumTick(y,image->rows) != MagickFalse)
-                   ProgressMonitor(LoadImageText,image->rows-y-1,image->rows);*/
         break;
       }
     case 8: /* Convert PseudoColor scanline. */
@@ -235,9 +226,6 @@
           }
         if (SyncAuthenticPixels(image,exception) == MagickFalse)
           break;
-        /*           if (image->previous == (Image *) NULL)
-                     if (QuantumTick(y,image->rows) != MagickFalse)
-                     ProgressMonitor(LoadImageText,image->rows-y-1,image->rows);*/
       }
       break;
 
diff --git a/coders/mat.c b/coders/mat.c
index 1e89762..53b59c7 100644
--- a/coders/mat.c
+++ b/coders/mat.c
@@ -222,9 +222,6 @@
   }
   if (!SyncAuthenticPixels(image,exception))
     return;
-  /*          if (image->previous == (Image *) NULL)
-     if (QuantumTick(y,image->rows))
-     MagickMonitor(LoadImageText,image->rows-y-1,image->rows); */
   return;
 }
 
@@ -279,9 +276,6 @@
   }
   if (!SyncAuthenticPixels(image,exception))
     return;
-  /*          if (image->previous == (Image *) NULL)
-     if (QuantumTick(y,image->rows))
-     MagickMonitor(LoadImageText,image->rows-y-1,image->rows); */
   return;
 }
 
diff --git a/coders/pict.c b/coders/pict.c
index 874e6ba..3c36218 100644
--- a/coders/pict.c
+++ b/coders/pict.c
@@ -1884,11 +1884,9 @@
         scanline[x]=(unsigned char) indexes[x];
       count+=EncodeImage(image,scanline,(unsigned long) (row_bytes & 0x7FFF),
         packed_scanline);
-      if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-          (QuantumTick(y,image->rows) != MagickFalse))
+      if (image->previous == (Image *) NULL)
         {
-          status=image->progress_monitor(SaveImageTag,y,image->rows,
-            image->client_data);
+          status=SetImageProgress(image,SaveImageTag,y,image->rows);
           if (status == MagickFalse)
             break;
         }
@@ -1940,11 +1938,9 @@
           }
           count+=EncodeImage(image,scanline,bytes_per_line & 0x7FFF,
             packed_scanline);
-          if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-              (QuantumTick(y,image->rows) != MagickFalse))
+          if (image->previous == (Image *) NULL)
             {
-              status=image->progress_monitor(SaveImageTag,y,image->rows,
-                image->client_data);
+              status=SetImageProgress(image,SaveImageTag,y,image->rows);
               if (status == MagickFalse)
                 break;
             }
diff --git a/coders/xpm.c b/coders/xpm.c
index df5a30e..97ee9c8 100644
--- a/coders/xpm.c
+++ b/coders/xpm.c
@@ -1026,15 +1026,12 @@
     (void) FormatMagickString(buffer,MaxTextExtent,"\"%s\n",
       (y == (long) (image->rows-1) ? "" : ","));
     (void) WriteBlobString(image,buffer);
-    if (QuantumTick(y,image->rows) != MagickFalse)
-      if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-          (QuantumTick(y,image->rows) != MagickFalse))
-        {
-          status=image->progress_monitor(SaveImageTag,y,image->rows,
-            image->client_data);
-          if (status == MagickFalse)
-            break;
-        }
+    if (image->previous == (Image *) NULL)
+      {
+        status=SetImageProgress(image,SaveImageTag,y,image->rows);
+        if (status == MagickFalse)
+          break;
+      }
   }
   (void) WriteBlobString(image,"};\n");
   (void) CloseBlob(image);
diff --git a/config/configure.xml b/config/configure.xml
index ab118b5..2d31291 100644
--- a/config/configure.xml
+++ b/config/configure.xml
@@ -8,7 +8,7 @@
 <configuremap>
   <configure name="NAME" value="ImageMagick"/>
   <configure name="LIB_VERSION" value="0x659"/>
-  <configure name="LIB_VERSION_NUMBER" value="6,5,9,6"/>
+  <configure name="LIB_VERSION_NUMBER" value="6,5,9,5"/>
   <configure name="RELEASE_DATE" value="2010-02-13"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
diff --git a/libtool b/libtool
index cf4a287..fa319df 100755
--- a/libtool
+++ b/libtool
@@ -1,7 +1,7 @@
 #! /bin/sh
 
 # libtool - Provide generalized library-building support services.
-# Generated automatically by config.status (ImageMagick) 6.5.9-6
+# Generated automatically by config.status (ImageMagick) 6.5.9-5
 # Libtool was configured on host magick.imagemagick.org:
 # NOTE: Changes made to this file will be lost: look at ltmain.sh.
 #
diff --git a/magick/color.c b/magick/color.c
index bc48927..255049a 100644
--- a/magick/color.c
+++ b/magick/color.c
@@ -1652,13 +1652,14 @@
     }
     if (x < (long) image->columns)
       break;
-    if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-        (QuantumTick(y,image->rows) != MagickFalse))
+    if (image->progress_monitor != (MagickProgressMonitor) NULL)
       {
-        status=image->progress_monitor(SearchImageText,y,image->rows,
-          image->client_data);
-        if (status == MagickFalse)
-          break;
+        MagickBooleanType
+          proceed;
+
+        proceed=SetImageProgress(image,SearchImageText,y,image->rows);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
       }
   }
   target_view=DestroyCacheView(target_view);
diff --git a/magick/constitute.c b/magick/constitute.c
index 01445ac..8940ffe 100644
--- a/magick/constitute.c
+++ b/magick/constitute.c
@@ -1295,16 +1295,21 @@
   number_images=GetImageListLength(images);
   for (p=images; p != (Image *) NULL; p=GetNextImageInList(p))
   {
-    progress_monitor=SetImageProgressMonitor(p,(MagickProgressMonitor) NULL,
-      p->client_data);
+    if (number_images != 1)
+      progress_monitor=SetImageProgressMonitor(p,(MagickProgressMonitor) NULL,
+        p->client_data);
     status&=WriteImage(write_info,p);
     GetImageException(p,exception);
-    (void) SetImageProgressMonitor(p,progress_monitor,p->client_data);
+    if (number_images != 1)
+      (void) SetImageProgressMonitor(p,progress_monitor,p->client_data);
     if (write_info->adjoin != MagickFalse)
       break;
-    proceed=SetImageProgress(p,WriteImageTag,i++,number_images);
-    if (proceed == MagickFalse)
-      break;
+    if (number_images != 1)
+      {
+        proceed=SetImageProgress(p,WriteImageTag,i++,number_images);
+        if (proceed == MagickFalse)
+          break;
+      }
   }
   write_info=DestroyImageInfo(write_info);
   return(status != 0 ? MagickTrue : MagickFalse);
diff --git a/magick/fx.c b/magick/fx.c
index 83da4f1..e20ea84 100644
--- a/magick/fx.c
+++ b/magick/fx.c
@@ -1383,7 +1383,7 @@
             q->opacity=ApplyFunction(q->opacity,function,number_parameters,
               parameters,exception);
           else
-            q->opacity=(Quantum) QuantumRange-ApplyFunction(
+            q->opacity=(Quantum) QuantumRange-ApplyFunction((Quantum)
               GetAlphaPixelComponent(q),function,number_parameters,parameters,
               exception);
         }
@@ -3554,13 +3554,14 @@
             return((Image *) NULL);
           }
         AppendImageToList(&morph_images,morph_image);
-        if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-            (QuantumTick(i,number_frames) != MagickFalse))
+        if (image->progress_monitor != (MagickProgressMonitor) NULL)
           {
-            status=image->progress_monitor(MorphImageTag,i,number_frames,
-              image->client_data);
-            if (status == MagickFalse)
-              break;
+            MagickBooleanType
+              proceed;
+
+            proceed=SetImageProgress(image,MorphImageTag,i,number_frames);
+            if (proceed == MagickFalse)
+              status=MagickFalse;
           }
       }
       return(GetFirstImageInList(morph_images));
@@ -5098,13 +5099,15 @@
           j++;
       }
     }
-    if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-        (QuantumTick((MagickOffsetType) depth-i,depth) != MagickFalse))
+    if (image->progress_monitor != (MagickProgressMonitor) NULL)
       {
-        status=image->progress_monitor(SteganoImageTag,(MagickOffsetType) depth-
-          i,depth,image->client_data);
-        if (status == MagickFalse)
-          break;
+        MagickBooleanType
+          proceed;
+
+        proceed=SetImageProgress(image,SteganoImageTag,(MagickOffsetType)
+          (depth-i),depth);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
       }
   }
   if (stegano_image->storage_class == PseudoClass)
@@ -5236,13 +5239,14 @@
     }
     if (SyncAuthenticPixels(stereo_image,exception) == MagickFalse)
       break;
-    if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-        (QuantumTick(y,image->rows) != MagickFalse))
+    if (image->progress_monitor != (MagickProgressMonitor) NULL)
       {
-        status=image->progress_monitor(StereoImageTag,y,stereo_image->rows,
-          stereo_image->client_data);
-        if (status == MagickFalse)
-          break;
+        MagickBooleanType
+          proceed;
+
+        proceed=SetImageProgress(image,StereoImageTag,y,stereo_image->rows);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
       }
   }
   return(stereo_image);
diff --git a/magick/histogram.c b/magick/histogram.c
index 9d02236..99bae91 100644
--- a/magick/histogram.c
+++ b/magick/histogram.c
@@ -1112,6 +1112,9 @@
   ColorPacket
     *histogram;
 
+  MagickBooleanType
+    status;
+
   MagickPixelPacket
     pixel;
 
@@ -1167,10 +1170,15 @@
     GetColorTuple(&pixel,MagickTrue,hex);
     (void) fprintf(file,MagickSizeFormat,p->count);
     (void) fprintf(file,": %s %s %s\n",tuple,hex,color);
-    if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-        (QuantumTick(i,number_colors) != MagickFalse))
-      (void) image->progress_monitor(HistogramImageTag,i,number_colors,
-        image->client_data);
+    if (image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+        proceed=SetImageProgress(image,HistogramImageTag,i,number_colors);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
     p++;
   }
   (void) fflush(file);
@@ -1208,6 +1216,9 @@
 {
 #define UniqueColorsImageTag  "UniqueColors/Image"
 
+  MagickBooleanType
+    status;
+
   register long
     i;
 
@@ -1247,10 +1258,16 @@
         cube_info->x++;
         p++;
       }
-      if ((image->progress_monitor != (MagickProgressMonitor) NULL) &&
-          (QuantumTick(cube_info->progress,cube_info->colors) != MagickFalse))
-        (void) image->progress_monitor(UniqueColorsImageTag,cube_info->progress,
-          cube_info->colors,image->client_data);
+      if (image->progress_monitor != (MagickProgressMonitor) NULL)
+        {
+          MagickBooleanType
+            proceed;
+
+          proceed=SetImageProgress(image,UniqueColorsImageTag,
+            cube_info->progress,cube_info->colors);
+          if (proceed == MagickFalse)
+            status=MagickFalse;
+        }
       cube_info->progress++;
     }
 }
diff --git a/magick/montage.c b/magick/montage.c
index 5b8a929..1165371 100644
--- a/magick/montage.c
+++ b/magick/montage.c
@@ -853,13 +853,14 @@
             (montage_info->shadow != MagickFalse ? 4 : 0));
           max_height=0;
         }
-      if ((images->progress_monitor != (MagickProgressMonitor) NULL) &&
-          (QuantumTick(tiles,total_tiles) != MagickFalse))
+      if (images->progress_monitor != (MagickProgressMonitor) NULL)
         {
-          status=images->progress_monitor(MontageImageTag,tiles,total_tiles,
-            images->client_data);
-          if (status == MagickFalse)
-            break;
+          MagickBooleanType
+            proceed;
+
+          proceed=SetImageProgress(image,MontageImageTag,tiles,total_tiles);
+          if (proceed == MagickFalse)
+            status=MagickFalse;
         }
       image_list[tile]=DestroyImage(image_list[tile]);
       image=DestroyImage(image);
diff --git a/magick/version.h b/magick/version.h
index 255d02c..ca38040 100644
--- a/magick/version.h
+++ b/magick/version.h
@@ -30,7 +30,7 @@
 #define MagickLibVersion  0x659
 #define MagickLibVersionText  "6.5.9"
 #define MagickLibVersionNumber  3,0,0
-#define MagickLibAddendum  "-6"
+#define MagickLibAddendum  "-5"
 #define MagickLibInterface  3
 #define MagickLibMinInterface  3
 #define MagickReleaseDate  "2010-02-13"
diff --git a/version.sh b/version.sh
index 5370960..2422ce5 100644
--- a/version.sh
+++ b/version.sh
@@ -12,7 +12,7 @@
 # PACKAGE_NAME (e.g. "1.0.0").
 PACKAGE_VERSION='6.5.9'
 PACKAGE_LIB_VERSION="0x659"
-PACKAGE_RELEASE="6"
+PACKAGE_RELEASE="5"
 PACKAGE_LIB_VERSION_NUMBER="6,5,9,${PACKAGE_RELEASE}"
 PACKAGE_RELEASE_DATE=`date +%F`
 PACKAGE_STRING="$PACKAGE_NAME $PACKAGE_VERSION"