diff --git a/MagickCore/configure.c b/MagickCore/configure.c
index 3e2cfda..9fc26f0 100644
--- a/MagickCore/configure.c
+++ b/MagickCore/configure.c
@@ -672,6 +672,10 @@
 #if defined(MAGICKCORE_SHARE_PATH)
   (void) AppendValueToLinkedList(paths,ConstantString(MAGICKCORE_SHARE_PATH));
 #endif
+#if defined(MAGICKCORE_SHAREARCH_PATH)
+  (void) AppendValueToLinkedList(paths,ConstantString(
+    MAGICKCORE_SHAREARCH_PATH));
+#endif
 #if defined(MAGICKCORE_CONFIGURE_PATH)
   (void) AppendValueToLinkedList(paths,ConstantString(
     MAGICKCORE_CONFIGURE_PATH));
diff --git a/MagickCore/display.c b/MagickCore/display.c
index e519246..ecd5ee7 100644
--- a/MagickCore/display.c
+++ b/MagickCore/display.c
@@ -3543,7 +3543,7 @@
               break;
             if (entry != 5)
               {
-                (*image)->fuzz=SiPrefixToDouble(FuzzMenu[entry],(double)
+                (*image)->fuzz=InterpretLocaleInterval(FuzzMenu[entry],(double)
                   QuantumRange+1.0);
                 break;
               }
@@ -3553,7 +3553,7 @@
             if (*fuzz == '\0')
               break;
             (void) ConcatenateMagickString(fuzz,"%",MaxTextExtent);
-            (*image)->fuzz=SiPrefixToDouble(fuzz,(double) QuantumRange+1.0);
+            (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
             break;
           }
           case ColorEditUndoCommand:
@@ -7728,7 +7728,7 @@
       (void) XDialogWidget(display,windows,"Trim","Enter fuzz factor:",fuzz);
       if (*fuzz == '\0')
         break;
-      (*image)->fuzz=SiPrefixToDouble(fuzz,(double) QuantumRange+1.0);
+      (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
       /*
         Trim image.
       */
@@ -8310,7 +8310,7 @@
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      threshold=SiPrefixToDouble(factor,QuantumRange);
+      threshold=InterpretLocaleInterval(factor,QuantumRange);
       (void) BilevelImage(*image,threshold,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
@@ -8512,7 +8512,7 @@
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      threshold=SiPrefixToDouble(factor,QuantumRange);
+      threshold=InterpretLocaleInterval(factor,QuantumRange);
       sepia_image=SepiaToneImage(*image,threshold,exception);
       if (sepia_image != (Image *) NULL)
         {
@@ -8547,7 +8547,7 @@
       */
       XSetCursorState(display,windows,MagickTrue);
       XCheckRefreshWindows(display,windows);
-      threshold=SiPrefixToDouble(factor,QuantumRange);
+      threshold=InterpretLocaleInterval(factor,QuantumRange);
       (void) SolarizeImage(*image,threshold,exception);
       XSetCursorState(display,windows,MagickFalse);
       if (windows->image.orphan != MagickFalse)
@@ -9864,7 +9864,7 @@
               break;
             if (entry != 5)
               {
-                (*image)->fuzz=SiPrefixToDouble(FuzzMenu[entry],(double)
+                (*image)->fuzz=InterpretLocaleInterval(FuzzMenu[entry],(double)
                   QuantumRange+1.0);
                 break;
               }
@@ -9874,7 +9874,7 @@
             if (*fuzz == '\0')
               break;
             (void) ConcatenateMagickString(fuzz,"%",MaxTextExtent);
-            (*image)->fuzz=SiPrefixToDouble(fuzz,(double) QuantumRange+1.0);
+            (*image)->fuzz=InterpretLocaleInterval(fuzz,(double) QuantumRange+1.0);
             break;
           }
           case MatteEditValueCommand:
diff --git a/MagickCore/fx.c b/MagickCore/fx.c
index 787958e..2403059 100644
--- a/MagickCore/fx.c
+++ b/MagickCore/fx.c
@@ -194,60 +194,6 @@
     Force right-to-left associativity for unary negation.
   */
   (void) SubstituteString(&fx_info->expression,"-","-1.0*");
-  if ((strstr(fx_info->expression,"e+") != (char *) NULL) ||
-      (strstr(fx_info->expression,"e-") != (char *) NULL))
-    {
-      /*
-        Convert scientific notation.
-      */
-      (void) SubstituteString(&fx_info->expression,"0e+","0**10^");
-      (void) SubstituteString(&fx_info->expression,"1e+","1**10^");
-      (void) SubstituteString(&fx_info->expression,"2e+","2**10^");
-      (void) SubstituteString(&fx_info->expression,"3e+","3**10^");
-      (void) SubstituteString(&fx_info->expression,"4e+","4**10^");
-      (void) SubstituteString(&fx_info->expression,"5e+","5**10^");
-      (void) SubstituteString(&fx_info->expression,"6e+","6**10^");
-      (void) SubstituteString(&fx_info->expression,"7e+","7**10^");
-      (void) SubstituteString(&fx_info->expression,"8e+","8**10^");
-      (void) SubstituteString(&fx_info->expression,"9e+","9**10^");
-      (void) SubstituteString(&fx_info->expression,"0e-1.0*","0**10^-");
-      (void) SubstituteString(&fx_info->expression,"1e-1.0*","1**10^-");
-      (void) SubstituteString(&fx_info->expression,"2e-1.0*","2**10^-");
-      (void) SubstituteString(&fx_info->expression,"3e-1.0*","3**10^-");
-      (void) SubstituteString(&fx_info->expression,"4e-1.0*","4**10^-");
-      (void) SubstituteString(&fx_info->expression,"5e-1.0*","5**10^-");
-      (void) SubstituteString(&fx_info->expression,"6e-1.0*","6**10^-");
-      (void) SubstituteString(&fx_info->expression,"7e-1.0*","7**10^-");
-      (void) SubstituteString(&fx_info->expression,"8e-1.0*","8**10^-");
-      (void) SubstituteString(&fx_info->expression,"9e-1.0*","9**10^-");
-    }
-  if ((strstr(fx_info->expression,"E+") != (char *) NULL) ||
-      (strstr(fx_info->expression,"E-") != (char *) NULL))
-    {
-      /*
-        Convert scientific notation.
-      */
-      (void) SubstituteString(&fx_info->expression,"0E+","0**10^");
-      (void) SubstituteString(&fx_info->expression,"1E+","1**10^");
-      (void) SubstituteString(&fx_info->expression,"2E+","2**10^");
-      (void) SubstituteString(&fx_info->expression,"3E+","3**10^");
-      (void) SubstituteString(&fx_info->expression,"4E+","4**10^");
-      (void) SubstituteString(&fx_info->expression,"5E+","5**10^");
-      (void) SubstituteString(&fx_info->expression,"6E+","6**10^");
-      (void) SubstituteString(&fx_info->expression,"7E+","7**10^");
-      (void) SubstituteString(&fx_info->expression,"8E+","8**10^");
-      (void) SubstituteString(&fx_info->expression,"9E+","9**10^");
-      (void) SubstituteString(&fx_info->expression,"0E-1.0*","0**10^-");
-      (void) SubstituteString(&fx_info->expression,"1E-1.0*","1**10^-");
-      (void) SubstituteString(&fx_info->expression,"2E-1.0*","2**10^-");
-      (void) SubstituteString(&fx_info->expression,"3E-1.0*","3**10^-");
-      (void) SubstituteString(&fx_info->expression,"4E-1.0*","4**10^-");
-      (void) SubstituteString(&fx_info->expression,"5E-1.0*","5**10^-");
-      (void) SubstituteString(&fx_info->expression,"6E-1.0*","6**10^-");
-      (void) SubstituteString(&fx_info->expression,"7E-1.0*","7**10^-");
-      (void) SubstituteString(&fx_info->expression,"8E-1.0*","8**10^-");
-      (void) SubstituteString(&fx_info->expression,"9E-1.0*","9**10^-");
-    }
   /*
     Convert complex to simple operators.
   */
@@ -2765,6 +2711,8 @@
     case 'P':
     case 'p':
     {
+      if (LocaleCompare(expression,"phi") == 0)
+        return((MagickRealType) MagickPHI);
       if (LocaleCompare(expression,"pi") == 0)
         return((MagickRealType) MagickPI);
       if (LocaleNCompare(expression,"pow",3) == 0)
diff --git a/MagickCore/image-private.h b/MagickCore/image-private.h
index d19dc11..5cd5bde 100644
--- a/MagickCore/image-private.h
+++ b/MagickCore/image-private.h
@@ -23,6 +23,7 @@
 #endif
 
 #define Magick2PI    6.28318530717958647692528676655900576839433879875020L
+#define MagickPHI    1.61803398874989484820
 #define MagickPI2    1.57079632679489661923132169163975144209858469968755L
 #define MagickSQ1_2  0.70710678118654752440084436210484903928483593768847L
 #define MagickSQ2    1.41421356237309504880168872420969807856967187537695L
diff --git a/MagickCore/image.c b/MagickCore/image.c
index 41abdc7..2d54db2 100644
--- a/MagickCore/image.c
+++ b/MagickCore/image.c
@@ -4130,7 +4130,7 @@
       exception);
   option=GetImageOption(image_info,"bias");
   if (option != (const char *) NULL)
-    image->bias=SiPrefixToDouble(option,QuantumRange);
+    image->bias=InterpretLocaleInterval(option,QuantumRange);
   option=GetImageOption(image_info,"black-point-compensation");
   if (option != (const char *) NULL)
     image->black_point_compensation=(MagickBooleanType) ParseCommandOption(
@@ -4185,7 +4185,7 @@
       MagickFalse,option);
   option=GetImageOption(image_info,"fuzz");
   if (option != (const char *) NULL)
-    image->fuzz=SiPrefixToDouble(option,(double) QuantumRange+1.0);
+    image->fuzz=InterpretLocaleInterval(option,(double) QuantumRange+1.0);
   option=GetImageOption(image_info,"gravity");
   if (option != (const char *) NULL)
     image->gravity=(GravityType) ParseCommandOption(MagickGravityOptions,
diff --git a/MagickCore/locale.c b/MagickCore/locale.c
index 0460481..64a15d6 100644
--- a/MagickCore/locale.c
+++ b/MagickCore/locale.c
@@ -879,23 +879,84 @@
 MagickExport double InterpretLocaleValue(const char *restrict string,
   char **restrict sentinal)
 {
+  char
+    *q;
+
   double
     value;
 
-#if defined(MAGICKCORE_HAVE_STRTOD_L)
-  {
-    locale_t
-      locale;
+  static const double
+    SIPrefixes['z'-'E'+1] =
+    {
+      ['y'-'E'] = (-24.0),
+      ['z'-'E'] = (-21.0),
+      ['a'-'E'] = (-18.0),
+      ['f'-'E'] = (-15.0),
+      ['p'-'E'] = (-12.0),
+      ['n'-'E'] = (-9.0),
+      ['u'-'E'] = (-6.0),
+      ['m'-'E'] = (-3.0),
+      ['c'-'E'] = (-2.0),
+      ['d'-'E'] = (-1.0),
+      ['h'-'E'] = 2.0,
+      ['k'-'E'] = 3.0,
+      ['K'-'E'] = 3.0,
+      ['M'-'E'] = 6.0,
+      ['G'-'E'] = 9.0,
+      ['T'-'E'] = 12.0,
+      ['P'-'E'] = 15.0,
+      ['E'-'E'] = 18.0,
+      ['Z'-'E'] = 21.0,
+      ['Y'-'E'] = 24.0
+    };
 
-    locale=AcquireCLocale();
-    if (locale == (locale_t) NULL)
-      value=strtod(string,sentinal);
-    else
-      value=strtod_l(string,sentinal,locale);
-  }
+  if ((*string == '0') && ((string[1] | 0x20)=='x'))
+    value=(double) strtoul(string,&q,16);
+  else
+    {
+#if defined(MAGICKCORE_HAVE_STRTOD_L)
+      locale_t
+        locale;
+
+      locale=AcquireCLocale();
+      if (locale == (locale_t) NULL)
+        value=strtod(string,&q);
+      else
+        value=strtod_l(string,&q,locale);
 #else
-  value=strtod(string,sentinal);
+      value=strtod(string,&q);
 #endif
+    }
+  if (q != string)
+    {
+      if ((*q >= 'E') && (*q <= 'z'))
+        {
+          double
+            e;
+
+          e=SIPrefixes[*q-'E'];
+          if (e >= MagickEpsilon)
+            {
+              if (q[1] == 'i')
+                {
+                  value*=pow(2.0,e/0.3);
+                  q+=2;
+                }
+              else
+                {
+                  value*=pow(10.0,e);
+                  q++;
+                }
+            }
+        }
+      if (*q == 'B')
+        {
+          value*=8.0;
+          q++;
+        }
+    }
+  if (sentinal != (char **) NULL)
+    *sentinal=q;
   return(value);
 }
 
diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h
index 2eb6a0f..b807d4c 100644
--- a/MagickCore/magick-config.h
+++ b/MagickCore/magick-config.h
@@ -1356,6 +1356,17 @@
 #endif
 
 /* Directory where architecture-independent configuration files live. */
+#ifndef MAGICKCORE_SHAREARCH_PATH
+#define MAGICKCORE_SHAREARCH_PATH "/usr/local/share/ImageMagick-7.0.0/"
+#endif
+
+/* Subdirectory of lib where architecture-independent configuration files
+   live. */
+#ifndef MAGICKCORE_SHAREARCH_RELATIVE_PATH
+#define MAGICKCORE_SHAREARCH_RELATIVE_PATH "ImageMagick-7.0.0"
+#endif
+
+/* Directory where architecture-independent configuration files live. */
 #ifndef MAGICKCORE_SHARE_PATH
 #define MAGICKCORE_SHARE_PATH "/usr/local/share/ImageMagick-7.0.0/"
 #endif
diff --git a/MagickCore/property.c b/MagickCore/property.c
index 42159a0..da7e19c 100644
--- a/MagickCore/property.c
+++ b/MagickCore/property.c
@@ -3200,7 +3200,7 @@
         }
       if (LocaleCompare(property,"bias") == 0)
         {
-          image->bias=SiPrefixToDouble(value,QuantumRange);
+          image->bias=InterpretLocaleInterval(value,QuantumRange);
           break;
         }
       status=AddValueToSplayTree((SplayTreeInfo *) image->properties,
diff --git a/MagickCore/resource.c b/MagickCore/resource.c
index 567d9fc..1c417d0 100644
--- a/MagickCore/resource.c
+++ b/MagickCore/resource.c
@@ -899,7 +899,7 @@
   double
     value;
 
-  value=SiPrefixToDouble(string,interval);
+  value=InterpretLocaleInterval(string,interval);
   if (value >= (double) MagickULLConstant(~0))
     return(MagickULLConstant(~0));
   return((MagickSizeType) value);
diff --git a/MagickCore/string-private.h b/MagickCore/string-private.h
index 6e4308c..3a0d4ea 100644
--- a/MagickCore/string-private.h
+++ b/MagickCore/string-private.h
@@ -22,35 +22,20 @@
 extern "C" {
 #endif
 
-static inline double SiPrefixToDouble(const char *string,const double interval)
+static inline double InterpretLocaleInterval(const char *string,const double interval)
 {
   char
     *q;
 
   double
-    scale,
     value;
 
   /*
     Interpret string with International System of Units (SI) unit prefix.
   */
   value=InterpretLocaleValue(string,&q);
-  scale=1000.0;
-  if ((*q != '\0') && (tolower((int) ((unsigned char) *(q+1))) == 'i'))
-    scale=1024.0;
-  switch (tolower((int) ((unsigned char) *q)))
-  {
-    case '%': value*=pow(scale,0)*interval/100.0; break;
-    case 'k': value*=pow(scale,1); break;
-    case 'm': value*=pow(scale,2); break;
-    case 'g': value*=pow(scale,3); break;
-    case 't': value*=pow(scale,4); break;
-    case 'p': value*=pow(scale,5); break;
-    case 'e': value*=pow(scale,6); break;
-    case 'z': value*=pow(scale,7); break;
-    case 'y': value*=pow(scale,8); break;
-    default:  break;
-  }
+  if (*q == '%')
+    value*=interval/100.0;
   return(value);
 }
 
diff --git a/MagickCore/string.c b/MagickCore/string.c
index 621eb2b..dd6ded7 100644
--- a/MagickCore/string.c
+++ b/MagickCore/string.c
@@ -3,24 +3,24 @@
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%                  sssss   ttttt  rrrr   iiiii  n   n   gggg                  %
-%                  ss        t    r   r    i    nn  n  g                      %
-%                   sss      t    rrrr     i    n n n  g ggg                  %
-%                     ss     t    r r      i    n  nn  g   g                  %
-%                  sssss     t    r  r   iiiii  n   n   gggg                  %
+%                  SSSSS   TTTTT  RRRR   IIIII  N   N   GGGG                  %
+%                  SS        T    R   R    I    NN  N  G                      %
+%                   SSS      T    RRRR     I    N N N  G GGG                  %
+%                     SS     T    R R      I    N  NN  G   G                  %
+%                  SSSSS     T    R  R   IIIII  N   N   GGGG                  %
 %                                                                             %
 %                                                                             %
-%                        MagickCore string methods                            %
+%                        MagickCore String Methods                            %
 %                                                                             %
-%                             software design                                 %
-%                               john cristy                                   %
-%                               august 2003                                   %
+%                             Software Design                                 %
+%                               John Cristy                                   %
+%                               August 2003                                   %
 %                                                                             %
 %                                                                             %
-%  copyright 1999-2011 imagemagick studio llc, a non-profit organization      %
+%  Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization      %
 %  dedicated to making software imaging solutions freely available.           %
 %                                                                             %
-%  you may not use this file except in compliance with the license.  you may  %
+%  You may not use this file except in compliance with the license.  You may  %
 %  obtain a copy of the license at                                            %
 %                                                                             %
 %    http://www.imagemagick.org/script/license.php                            %
@@ -28,7 +28,7 @@
 %  unless required by applicable law or agreed to in writing, software        %
 %  distributed under the license is distributed on an "as is" basis,          %
 %  without warranties or conditions of any kind, either express or implied.   %
-%  see the license for the specific language governing permissions and        %
+%  See the license for the specific language governing permissions and        %
 %  limitations under the license.                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/MagickCore/version.h b/MagickCore/version.h
index 08ca793..2378578 100644
--- a/MagickCore/version.h
+++ b/MagickCore/version.h
@@ -27,14 +27,14 @@
 */
 #define MagickPackageName "ImageMagick"
 #define MagickCopyright  "Copyright (C) 1999-2011 ImageMagick Studio LLC"
-#define MagickSVNRevision  "5819"
+#define MagickSVNRevision  "5835"
 #define MagickLibVersion  0x700
 #define MagickLibVersionText  "7.0.0"
 #define MagickLibVersionNumber  7,0,0
 #define MagickLibAddendum  "-0"
 #define MagickLibInterface  7
 #define MagickLibMinInterface  7
-#define MagickReleaseDate  "2011-10-30"
+#define MagickReleaseDate  "2011-11-02"
 #define MagickChangeDate   "20110801"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
diff --git a/MagickWand/mogrify.c b/MagickWand/mogrify.c
index c70f7be..f961d3e 100644
--- a/MagickWand/mogrify.c
+++ b/MagickWand/mogrify.c
@@ -1309,7 +1309,7 @@
             if (*option == '+')
               threshold=40.0*QuantumRange/100.0;
             else
-              threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
+              threshold=InterpretLocaleInterval(argv[i+1],QuantumRange);
             mogrify_image=DeskewImage(*image,threshold,exception);
             break;
           }
@@ -1507,7 +1507,7 @@
             (void) SyncImageSettings(mogrify_info,*image,exception);
             op=(MagickEvaluateOperator) ParseCommandOption(
               MagickEvaluateOptions,MagickFalse,argv[i+1]);
-            constant=SiPrefixToDouble(argv[i+2],QuantumRange);
+            constant=InterpretLocaleInterval(argv[i+2],QuantumRange);
             (void) EvaluateImage(*image,op,constant,exception);
             break;
           }
@@ -2618,7 +2618,7 @@
               Sepia-tone image.
             */
             (void) SyncImageSettings(mogrify_info,*image,exception);
-            threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
+            threshold=InterpretLocaleInterval(argv[i+1],QuantumRange);
             mogrify_image=SepiaToneImage(*image,threshold,exception);
             break;
           }
@@ -2782,7 +2782,7 @@
               threshold;
 
             (void) SyncImageSettings(mogrify_info,*image,exception);
-            threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
+            threshold=InterpretLocaleInterval(argv[i+1],QuantumRange);
             (void) SolarizeImage(*image,threshold,exception);
             break;
           }
@@ -2930,7 +2930,7 @@
             if (*option == '+')
               threshold=(double) QuantumRange/2;
             else
-              threshold=SiPrefixToDouble(argv[i+1],QuantumRange);
+              threshold=InterpretLocaleInterval(argv[i+1],QuantumRange);
             (void) BilevelImage(*image,threshold,exception);
             break;
           }
@@ -6247,7 +6247,7 @@
 
             limit=MagickResourceInfinity;
             if (LocaleCompare("unlimited",argv[i+1]) != 0)
-              limit=(MagickSizeType) SiPrefixToDouble(argv[i+1],100.0);
+              limit=(MagickSizeType) InterpretLocaleInterval(argv[i+1],100.0);
             (void) SetMagickResourceLimit(MemoryResource,limit);
             (void) SetMagickResourceLimit(MapResource,2*limit);
             break;
@@ -6525,7 +6525,7 @@
                 (void) SetImageOption(image_info,option+1,"0");
                 break;
               }
-            image_info->fuzz=SiPrefixToDouble(argv[i+1],(double) QuantumRange+
+            image_info->fuzz=InterpretLocaleInterval(argv[i+1],(double) QuantumRange+
               1.0);
             (void) SetImageOption(image_info,option+1,argv[i+1]);
             break;
@@ -6653,7 +6653,7 @@
               MagickFalse,argv[i+1]);
             limit=MagickResourceInfinity;
             if (LocaleCompare("unlimited",argv[i+2]) != 0)
-              limit=(MagickSizeType) SiPrefixToDouble(argv[i+2],100.0);
+              limit=(MagickSizeType) InterpretLocaleInterval(argv[i+2],100.0);
             (void) SetMagickResourceLimit(type,limit);
             break;
           }
diff --git a/MagickWand/operation.c b/MagickWand/operation.c
index b2ad693..1b9e729 100644
--- a/MagickWand/operation.c
+++ b/MagickWand/operation.c
@@ -557,7 +557,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare("unlimited",arg) != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(arg,100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(arg,100.0);
           (void) SetMagickResourceLimit(MemoryResource,limit);
           (void) SetMagickResourceLimit(MapResource,2*limit);
           break;
@@ -832,7 +832,7 @@
           */
           if (IfSetOption)
             {
-              image_info->fuzz=SiPrefixToDouble(arg,(double) QuantumRange+1.0);
+              image_info->fuzz=InterpretLocaleInterval(arg,(double) QuantumRange+1.0);
               (void) SetImageOption(image_info,option,arg);
               break;
             }
@@ -965,7 +965,7 @@
             MagickFalse,arg);
           limit=MagickResourceInfinity;
           if (LocaleCompare("unlimited",argv[2]) != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(argv[2],100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(argv[2],100.0);
           (void) SetMagickResourceLimit(type,limit);
           break;
         }
@@ -2115,7 +2115,7 @@
           if (*argv[0] == '+')
             threshold=40.0*QuantumRange/100.0;
           else
-            threshold=SiPrefixToDouble(args[0],QuantumRange);
+            threshold=InterpretLocaleInterval(args[0],QuantumRange);
           new_image=DeskewImage(*image,threshold,exception);
           break;
         }
@@ -2276,7 +2276,7 @@
           (void) SyncImageSettings(image_info,*image,exception);
           op=(MagickEvaluateOperator) ParseCommandOption(
             MagickEvaluateOptions,MagickFalse,args[0]);
-          constant=SiPrefixToDouble(argv[2],QuantumRange);
+          constant=InterpretLocaleInterval(argv[2],QuantumRange);
           (void) EvaluateImage(*image,op,constant,exception);
           break;
         }
@@ -3218,7 +3218,7 @@
             threshold;
 
           (void) SyncImageSettings(image_info,*image,exception);
-          threshold=SiPrefixToDouble(args[0],QuantumRange);
+          threshold=InterpretLocaleInterval(args[0],QuantumRange);
           new_image=SepiaToneImage(*image,threshold,exception);
           break;
         }
@@ -3354,7 +3354,7 @@
             threshold;
 
           (void) SyncImageSettings(image_info,*image,exception);
-          threshold=SiPrefixToDouble(args[0],QuantumRange);
+          threshold=InterpretLocaleInterval(args[0],QuantumRange);
           (void) SolarizeImage(*image,threshold,exception);
           break;
         }
@@ -3433,7 +3433,7 @@
           if (*argv[0] == '+')
             threshold=(double) QuantumRange/2;
           else
-            threshold=SiPrefixToDouble(args[0],QuantumRange);
+            threshold=InterpretLocaleInterval(args[0],QuantumRange);
           (void) BilevelImage(*image,threshold,exception);
           break;
         }
diff --git a/Makefile.in b/Makefile.in
index b7c8295..c6e861e 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -341,8 +341,8 @@
 	"$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
 	"$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
 	"$(DESTDIR)$(configlibdir)" "$(DESTDIR)$(configsharedir)" \
-	"$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" \
-	"$(DESTDIR)$(MagickCoreincdir)" \
+	"$(DESTDIR)$(configsharearchdir)" "$(DESTDIR)$(docdir)" \
+	"$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(MagickCoreincdir)" \
 	"$(DESTDIR)$(MagickWandincdir)" "$(DESTDIR)$(includedir)" \
 	"$(DESTDIR)$(ltdlincludedir)" "$(DESTDIR)$(magickppincdir)" \
 	"$(DESTDIR)$(magickpptopincdir)"
@@ -2183,8 +2183,8 @@
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(man_MANS)
-DATA = $(configlib_DATA) $(configshare_DATA) $(doc_DATA) \
-	$(pkgconfig_DATA)
+DATA = $(configlib_DATA) $(configshare_DATA) $(configsharearch_DATA) \
+	$(doc_DATA) $(pkgconfig_DATA)
 am__include_HEADERS_DIST = ltdl/ltdl.h
 am__ltdlinclude_HEADERS_DIST = ltdl/libltdl/lt_system.h \
 	ltdl/libltdl/lt_error.h ltdl/libltdl/lt_dlloader.h
@@ -2374,7 +2374,7 @@
 ILBMDecodeDelegate = @ILBMDecodeDelegate@
 ILBMEncodeDelegate = @ILBMEncodeDelegate@
 INCLTDL = @INCLTDL@
-INCLUDEDIR_ARCH = @INCLUDEDIR_ARCH@
+INCLUDEARCH_DIR = @INCLUDEARCH_DIR@
 INCLUDE_DIR = @INCLUDE_DIR@
 INCLUDE_PATH = @INCLUDE_PATH@
 INFO_DIR = @INFO_DIR@
@@ -2535,7 +2535,8 @@
 SCANDecodeDelegate = @SCANDecodeDelegate@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
-SHAREDIR_ARCH = @SHAREDIR_ARCH@
+SHAREARCH_DIR = @SHAREARCH_DIR@
+SHAREARCH_PATH = @SHAREARCH_PATH@
 SHAREDSTATE_DIR = @SHAREDSTATE_DIR@
 SHARE_PATH = @SHARE_PATH@
 SHELL = @SHELL@
@@ -2776,12 +2777,18 @@
 # (share/ImageMagick-version)
 configsharedir = $(SHARE_PATH)
 configshare_DATA = \
-	config/configure.xml \
 	config/english.xml \
 	config/francais.xml \
 	config/locale.xml
 
 
+# Where architecture-independent configuration files get installed
+# (share/arch/ImageMagick-version)
+configsharearchdir = $(SHAREARCH_PATH)
+configsharearch_DATA = \
+	config/configure.xml
+
+
 # Where architecture-dependent configuration files get installed
 # (share/ImageMagick-version)
 configlibdir = $(CONFIGURE_PATH)
@@ -10746,6 +10753,26 @@
 	test -n "$$files" || exit 0; \
 	echo " ( cd '$(DESTDIR)$(configsharedir)' && rm -f" $$files ")"; \
 	cd "$(DESTDIR)$(configsharedir)" && rm -f $$files
+install-configsharearchDATA: $(configsharearch_DATA)
+	@$(NORMAL_INSTALL)
+	test -z "$(configsharearchdir)" || $(MKDIR_P) "$(DESTDIR)$(configsharearchdir)"
+	@list='$(configsharearch_DATA)'; test -n "$(configsharearchdir)" || list=; \
+	for p in $$list; do \
+	  if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+	  echo "$$d$$p"; \
+	done | $(am__base_list) | \
+	while read files; do \
+	  echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(configsharearchdir)'"; \
+	  $(INSTALL_DATA) $$files "$(DESTDIR)$(configsharearchdir)" || exit $$?; \
+	done
+
+uninstall-configsharearchDATA:
+	@$(NORMAL_UNINSTALL)
+	@list='$(configsharearch_DATA)'; test -n "$(configsharearchdir)" || list=; \
+	files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
+	test -n "$$files" || exit 0; \
+	echo " ( cd '$(DESTDIR)$(configsharearchdir)' && rm -f" $$files ")"; \
+	cd "$(DESTDIR)$(configsharearchdir)" && rm -f $$files
 install-docDATA: $(doc_DATA)
 	@$(NORMAL_INSTALL)
 	test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
@@ -11290,7 +11317,7 @@
 install-binPROGRAMS: install-libLTLIBRARIES
 
 installdirs:
-	for dir in "$(DESTDIR)$(codersdir)" "$(DESTDIR)$(filtersdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(configlibdir)" "$(DESTDIR)$(configsharedir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(MagickCoreincdir)" "$(DESTDIR)$(MagickWandincdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(ltdlincludedir)" "$(DESTDIR)$(magickppincdir)" "$(DESTDIR)$(magickpptopincdir)"; do \
+	for dir in "$(DESTDIR)$(codersdir)" "$(DESTDIR)$(filtersdir)" "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(configlibdir)" "$(DESTDIR)$(configsharedir)" "$(DESTDIR)$(configsharearchdir)" "$(DESTDIR)$(docdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(MagickCoreincdir)" "$(DESTDIR)$(MagickWandincdir)" "$(DESTDIR)$(includedir)" "$(DESTDIR)$(ltdlincludedir)" "$(DESTDIR)$(magickppincdir)" "$(DESTDIR)$(magickpptopincdir)"; do \
 	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
 	done
 install: $(BUILT_SOURCES)
@@ -11376,10 +11403,11 @@
 install-data-am: install-MagickCoreincHEADERS \
 	install-MagickWandincHEADERS install-codersLTLIBRARIES \
 	install-configlibDATA install-configshareDATA \
-	install-data-local install-docDATA install-filtersLTLIBRARIES \
-	install-includeHEADERS install-ltdlincludeHEADERS \
-	install-magickppincHEADERS install-magickpptopincHEADERS \
-	install-man install-pkgconfigDATA
+	install-configsharearchDATA install-data-local install-docDATA \
+	install-filtersLTLIBRARIES install-includeHEADERS \
+	install-ltdlincludeHEADERS install-magickppincHEADERS \
+	install-magickpptopincHEADERS install-man \
+	install-pkgconfigDATA
 
 install-dvi: install-dvi-am
 
@@ -11433,11 +11461,12 @@
 	uninstall-MagickWandincHEADERS uninstall-binPROGRAMS \
 	uninstall-binSCRIPTS uninstall-codersLTLIBRARIES \
 	uninstall-configlibDATA uninstall-configshareDATA \
-	uninstall-docDATA uninstall-filtersLTLIBRARIES \
-	uninstall-includeHEADERS uninstall-libLTLIBRARIES \
-	uninstall-local uninstall-ltdlincludeHEADERS \
-	uninstall-magickppincHEADERS uninstall-magickpptopincHEADERS \
-	uninstall-man uninstall-pkgconfigDATA
+	uninstall-configsharearchDATA uninstall-docDATA \
+	uninstall-filtersLTLIBRARIES uninstall-includeHEADERS \
+	uninstall-libLTLIBRARIES uninstall-local \
+	uninstall-ltdlincludeHEADERS uninstall-magickppincHEADERS \
+	uninstall-magickpptopincHEADERS uninstall-man \
+	uninstall-pkgconfigDATA
 
 uninstall-man: uninstall-man1
 
@@ -11457,9 +11486,10 @@
 	html-am info info-am install install-MagickCoreincHEADERS \
 	install-MagickWandincHEADERS install-am install-binPROGRAMS \
 	install-binSCRIPTS install-codersLTLIBRARIES \
-	install-configlibDATA install-configshareDATA install-data \
-	install-data-am install-data-local install-docDATA install-dvi \
-	install-dvi-am install-exec install-exec-am install-exec-local \
+	install-configlibDATA install-configshareDATA \
+	install-configsharearchDATA install-data install-data-am \
+	install-data-local install-docDATA install-dvi install-dvi-am \
+	install-exec install-exec-am install-exec-local \
 	install-filtersLTLIBRARIES install-html install-html-am \
 	install-includeHEADERS install-info install-info-am \
 	install-libLTLIBRARIES install-ltdlincludeHEADERS \
@@ -11473,12 +11503,12 @@
 	uninstall-MagickCoreincHEADERS uninstall-MagickWandincHEADERS \
 	uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS \
 	uninstall-codersLTLIBRARIES uninstall-configlibDATA \
-	uninstall-configshareDATA uninstall-docDATA \
-	uninstall-filtersLTLIBRARIES uninstall-includeHEADERS \
-	uninstall-libLTLIBRARIES uninstall-local \
-	uninstall-ltdlincludeHEADERS uninstall-magickppincHEADERS \
-	uninstall-magickpptopincHEADERS uninstall-man uninstall-man1 \
-	uninstall-pkgconfigDATA
+	uninstall-configshareDATA uninstall-configsharearchDATA \
+	uninstall-docDATA uninstall-filtersLTLIBRARIES \
+	uninstall-includeHEADERS uninstall-libLTLIBRARIES \
+	uninstall-local uninstall-ltdlincludeHEADERS \
+	uninstall-magickppincHEADERS uninstall-magickpptopincHEADERS \
+	uninstall-man uninstall-man1 uninstall-pkgconfigDATA
 
 
 # We need the following in order to create an <argz.h> when the system
diff --git a/PerlMagick/Magick.xs b/PerlMagick/Magick.xs
index ecc723d..8bc91dd 100644
--- a/PerlMagick/Magick.xs
+++ b/PerlMagick/Magick.xs
@@ -1026,7 +1026,7 @@
 %
 */
 
-static double SiPrefixToDouble(const char *string,const double interval)
+static double InterpretLocaleInterval(const char *string,const double interval)
 {
   char
     *q;
@@ -1137,7 +1137,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(AreaResource,limit);
           break;
         }
@@ -1175,7 +1175,7 @@
       if (LocaleCompare(attribute,"bias") == 0)
         {
           for ( ; image; image=image->next)
-            image->bias=SiPrefixToDouble(SvPV(sval,na),QuantumRange);
+            image->bias=InterpretLocaleInterval(SvPV(sval,na),QuantumRange);
           break;
         }
       if (LocaleCompare(attribute,"blue-primary") == 0)
@@ -1213,9 +1213,9 @@
       if (LocaleCompare(attribute,"cache-threshold") == 0)
         {
           (void) SetMagickResourceLimit(MemoryResource,(MagickSizeType)
-            SiPrefixToDouble(SvPV(sval,na),100.0));
+            InterpretLocaleInterval(SvPV(sval,na),100.0));
           (void) SetMagickResourceLimit(MapResource,(MagickSizeType)
-            (2*SiPrefixToDouble(SvPV(sval,na),100.0)));
+            (2*InterpretLocaleInterval(SvPV(sval,na),100.0)));
           break;
         }
       if (LocaleCompare(attribute,"clip-mask") == 0)
@@ -1340,7 +1340,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(DiskResource,limit);
           break;
         }
@@ -1505,9 +1505,9 @@
       if (LocaleCompare(attribute,"fuzz") == 0)
         {
           if (info)
-            info->image_info->fuzz=SiPrefixToDouble(SvPV(sval,na),QuantumRange);
+            info->image_info->fuzz=InterpretLocaleInterval(SvPV(sval,na),QuantumRange);
           for ( ; image; image=image->next)
-            image->fuzz=SiPrefixToDouble(SvPV(sval,na),QuantumRange);
+            image->fuzz=InterpretLocaleInterval(SvPV(sval,na),QuantumRange);
           break;
         }
       if (info)
@@ -1665,7 +1665,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(MapResource,limit);
           break;
         }
@@ -1712,7 +1712,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(MemoryResource,limit);
           break;
         }
@@ -2035,7 +2035,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(ThreadResource,limit);
           break;
         }
@@ -2060,7 +2060,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(SvPV(sval,na),"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(SvPV(sval,na),100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(SvPV(sval,na),100.0);
           (void) SetMagickResourceLimit(TimeResource,limit);
           break;
         }
@@ -3180,7 +3180,7 @@
         {
           if (LocaleCompare(attribute,"fuzz") == 0)
             {
-              image->fuzz=SiPrefixToDouble(SvPV(ST(i),na),100.0);
+              image->fuzz=InterpretLocaleInterval(SvPV(ST(i),na),100.0);
               break;
             }
           ThrowPerlException(exception,OptionError,"UnrecognizedAttribute",
@@ -7623,7 +7623,7 @@
             geometry.y=argument_list[4].integer_reference;
           if (attribute_flag[5] != 0)
             image->fuzz=
-              SiPrefixToDouble(argument_list[5].string_reference,QuantumRange);
+              InterpretLocaleInterval(argument_list[5].string_reference,QuantumRange);
           image=CropImage(image,&geometry,exception);
           break;
         }
@@ -8222,7 +8222,7 @@
               invert=MagickTrue;
             }
           if (attribute_flag[5] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[5].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[5].string_reference,
               QuantumRange);
           if (attribute_flag[6] != 0)
             invert=(MagickBooleanType) argument_list[6].integer_reference;
@@ -8258,7 +8258,7 @@
             {
               if (compose != DissolveCompositeOp)
                 (void) SetImageAlpha(composite_image,(Quantum)
-                  SiPrefixToDouble(argument_list[6].string_reference,
+                  InterpretLocaleInterval(argument_list[6].string_reference,
                   QuantumRange),exception);
               else
                 {
@@ -8286,7 +8286,7 @@
                   */
                   (void) CloneString(&image->geometry,
                     argument_list[6].string_reference);
-                  opacity=(Quantum) SiPrefixToDouble(
+                  opacity=(Quantum) InterpretLocaleInterval(
                     argument_list[6].string_reference,QuantumRange);
                   if (composite_image->matte != MagickTrue)
                     (void) SetImageAlpha(composite_image,OpaqueAlpha,exception);
@@ -8789,10 +8789,10 @@
             QueryColorCompliance(argument_list[4].string_reference,
               AllCompliance,&target,exception);
           if (attribute_flag[3] != 0)
-            target.alpha=SiPrefixToDouble(argument_list[3].string_reference,
+            target.alpha=InterpretLocaleInterval(argument_list[3].string_reference,
               QuantumRange);
           if (attribute_flag[5] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[5].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[5].string_reference,
               QuantumRange);
           invert=MagickFalse;
           if (attribute_flag[6] != 0)
@@ -8887,7 +8887,7 @@
             (void) QueryColorCompliance(argument_list[1].string_reference,
               AllCompliance,&fill_color,exception);
           if (attribute_flag[2] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[2].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[2].string_reference,
               QuantumRange);
           if (attribute_flag[3] != 0)
             channel=(ChannelType) argument_list[3].integer_reference;
@@ -9006,7 +9006,7 @@
             flags=ParseGeometry(argument_list[0].string_reference,
               &geometry_info);
           if (attribute_flag[1] != 0)
-            geometry_info.rho=SiPrefixToDouble(
+            geometry_info.rho=InterpretLocaleInterval(
              argument_list[1].string_reference,QuantumRange);
           (void) SolarizeImage(image,geometry_info.rho,exception);
           break;
@@ -9059,10 +9059,10 @@
               AllCompliance,&target,exception);
           opacity=TransparentAlpha;
           if (attribute_flag[1] != 0)
-            opacity=SiPrefixToDouble(argument_list[1].string_reference,
+            opacity=InterpretLocaleInterval(argument_list[1].string_reference,
               QuantumRange);
           if (attribute_flag[2] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[2].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[2].string_reference,
               QuantumRange);
           if (attribute_flag[3] == 0)
             argument_list[3].integer_reference=0;
@@ -9082,7 +9082,7 @@
             argument_list[0].string_reference="50%";
           if (attribute_flag[1] != 0)
             channel=(ChannelType) argument_list[1].integer_reference;
-          threshold=SiPrefixToDouble(argument_list[0].string_reference,
+          threshold=InterpretLocaleInterval(argument_list[0].string_reference,
             QuantumRange);
           channel_mask=SetPixelChannelMask(image,channel);
           (void) BilevelImage(image,threshold,exception);
@@ -9111,7 +9111,7 @@
         case 59:  /* Trim */
         {
           if (attribute_flag[0] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[0].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[0].string_reference,
               QuantumRange);
           image=TrimImage(image,exception);
           break;
@@ -9247,7 +9247,7 @@
           if (attribute_flag[1] != 0)
             channel=(ChannelType) argument_list[1].integer_reference;
           if (attribute_flag[2] != 0)
-            image->bias=SiPrefixToDouble(argument_list[2].string_reference,
+            image->bias=InterpretLocaleInterval(argument_list[2].string_reference,
               QuantumRange);
           if (attribute_flag[3] != 0)
             {
@@ -9600,7 +9600,7 @@
               goto PerlException;
             }
           if (attribute_flag[1] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[1].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[1].string_reference,
               QuantumRange);
           (void) IsImagesEqual(image,argument_list[0].image_reference,
             exception);
@@ -9773,7 +9773,7 @@
           if (attribute_flag[4] != 0)
             geometry.y=argument_list[4].integer_reference;
           if (attribute_flag[5] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[5].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[5].string_reference,
               QuantumRange);
           if (attribute_flag[6] != 0)
             (void) QueryColorCompliance(argument_list[6].string_reference,
@@ -9898,7 +9898,7 @@
           if (attribute_flag[4] != 0)
             geometry.y=argument_list[4].integer_reference;
           if (attribute_flag[5] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[5].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[5].string_reference,
               QuantumRange);
           if (attribute_flag[6] != 0)
             (void) QueryColorCompliance(argument_list[6].string_reference,
@@ -10273,7 +10273,7 @@
             QueryColorCompliance(argument_list[4].string_reference,
               AllCompliance,&target,exception);
           if (attribute_flag[5] != 0)
-            image->fuzz=SiPrefixToDouble(argument_list[5].string_reference,
+            image->fuzz=InterpretLocaleInterval(argument_list[5].string_reference,
               QuantumRange);
           if (attribute_flag[6] != 0)
             channel=(ChannelType) argument_list[6].integer_reference;
@@ -10392,7 +10392,7 @@
             flags=ParseGeometry(argument_list[0].string_reference,
               &geometry_info);
           if (attribute_flag[1] != 0)
-            geometry_info.rho=SiPrefixToDouble(
+            geometry_info.rho=InterpretLocaleInterval(
               argument_list[1].string_reference,QuantumRange);
           image=DeskewImage(image,geometry_info.rho,exception);
           break;
diff --git a/coders/jpeg.c b/coders/jpeg.c
index ece1a9a..65549e5 100644
--- a/coders/jpeg.c
+++ b/coders/jpeg.c
@@ -1991,7 +1991,7 @@
             Search for compression quality that does not exceed image extent.
           */
           jpeg_info->quality=0;
-          extent=(MagickSizeType) SiPrefixToDouble(option,100.0);
+          extent=(MagickSizeType) InterpretLocaleInterval(option,100.0);
           (void) DeleteImageOption(jpeg_info,"jpeg:extent");
           (void) AcquireUniqueFilename(jpeg_image->filename);
           maximum=101;
diff --git a/coders/msl.c b/coders/msl.c
index c540367..b9de76e 100644
--- a/coders/msl.c
+++ b/coders/msl.c
@@ -8000,7 +8000,7 @@
 
           limit=MagickResourceInfinity;
           if (LocaleCompare(value,"unlimited") != 0)
-            limit=(MagickSizeType) SiPrefixToDouble(value,100.0);
+            limit=(MagickSizeType) InterpretLocaleInterval(value,100.0);
           (void) SetMagickResourceLimit(AreaResource,limit);
           break;
         }
@@ -8030,7 +8030,7 @@
         {
           if (image == (Image *) NULL)
             break;
-          image->bias=SiPrefixToDouble(value,QuantumRange);
+          image->bias=InterpretLocaleInterval(value,QuantumRange);
           break;
         }
       if (LocaleCompare(keyword,"blue-primary") == 0)
diff --git a/config/Makefile.am b/config/Makefile.am
index e496fb8..9e4bc04 100644
--- a/config/Makefile.am
+++ b/config/Makefile.am
@@ -18,11 +18,16 @@
 # (share/ImageMagick-version)
 configsharedir = $(SHARE_PATH)
 configshare_DATA = \
-	config/configure.xml \
 	config/english.xml \
 	config/francais.xml \
 	config/locale.xml
 
+# Where architecture-independent configuration files get installed
+# (share/arch/ImageMagick-version)
+configsharearchdir = $(SHAREARCH_PATH)
+configsharearch_DATA = \
+	config/configure.xml
+
 # Where architecture-dependent configuration files get installed
 # (share/ImageMagick-version)
 configlibdir =  $(CONFIGURE_PATH)
diff --git a/config/config.h.in b/config/config.h.in
index 48c1bdd..4f621e4 100644
--- a/config/config.h.in
+++ b/config/config.h.in
@@ -895,6 +895,13 @@
 #undef SELECT_TYPE_ARG5
 
 /* Directory where architecture-independent configuration files live. */
+#undef SHAREARCH_PATH
+
+/* Subdirectory of lib where architecture-independent configuration files
+   live. */
+#undef SHAREARCH_RELATIVE_PATH
+
+/* Directory where architecture-independent configuration files live. */
 #undef SHARE_PATH
 
 /* Subdirectory of lib where architecture-independent configuration files
diff --git a/config/configure.xml b/config/configure.xml
index fca8b55..bd235cb 100644
--- a/config/configure.xml
+++ b/config/configure.xml
@@ -10,8 +10,8 @@
   <configure name="VERSION" value="7.0.0"/>
   <configure name="LIB_VERSION" value="0x700"/>
   <configure name="LIB_VERSION_NUMBER" value="7,0,0,0"/>
-  <configure name="SVN_REVISION" value="5819" />
-  <configure name="RELEASE_DATE" value="2011-10-30"/>
+  <configure name="SVN_REVISION" value="5835" />
+  <configure name="RELEASE_DATE" value="2011-11-02"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
diff --git a/configure b/configure
index c99582d..cc20ec7 100755
--- a/configure
+++ b/configure
@@ -721,6 +721,7 @@
 BZIPDelegate
 BlenderDecodeDelegate
 AutotraceDecodeDelegate
+SHAREARCH_PATH
 SHARE_PATH
 CONFIGURE_PATH
 DOCUMENTATION_PATH
@@ -918,8 +919,8 @@
 PTHREAD_LIBS
 PTHREAD_CC
 ax_pthread_config
-SHAREDIR_ARCH
-INCLUDEDIR_ARCH
+SHAREARCH_DIR
+INCLUDEARCH_DIR
 WinPathScript
 USING_CL_FALSE
 USING_CL_TRUE
@@ -1086,8 +1087,8 @@
 with_dmalloc
 enable_bounds_checking
 enable_osx_universal_binary
-with_includedir_arch
-with_sharedir_arch
+with_includearch_dir
+with_sharearch_dir
 with_threads
 enable_openmp
 enable_opencl
@@ -1855,8 +1856,8 @@
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-dmalloc          use dmalloc, as in
 			  http://www.dmalloc.com/dmalloc.tar.gz
-  --includedir-arch=DIR   ARCH specific include directory
-  --sharedir-arch=DIR     ARCH specific config directory
+  --includearch-dir=DIR   ARCH specific include directory
+  --sharearch-dir=DIR     ARCH specific config directory
   --without-threads       disable threads support
   --with-pic              try to use only PIC/non-PIC objects [default=use
                           both]
@@ -3603,7 +3604,7 @@
 
 MAGICK_LIBRARY_VERSION_INFO=$MAGICK_LIBRARY_CURRENT:$MAGICK_LIBRARY_REVISION:$MAGICK_LIBRARY_AGE
 
-MAGICK_SVN_REVISION=5819
+MAGICK_SVN_REVISION=5835
 
 
 
@@ -8260,31 +8261,31 @@
 # ARCH specific include directory
 #
 
-# Check whether --with-includedir-arch was given.
-if test "${with_includedir_arch+set}" = set; then :
-  withval=$with_includedir_arch; includedir_arch=$withval
+# Check whether --with-includearch-dir was given.
+if test "${with_includearch_dir+set}" = set; then :
+  withval=$with_includearch_dir; includearch_dir=$withval
 else
-  includedir_arch=$INCLUDE_DIR
+  includearch_dir=$INCLUDE_DIR
 fi
 
 
-eval "eval INCLUDEDIR_ARCH=$includedir_arch"
+eval "eval INCLUDEARCH_DIR=$includearch_dir"
 
 
 #
 # ARCH specific configuration directory
 #
 
-# Check whether --with-sharedir-arch was given.
-if test "${with_sharedir_arch+set}" = set; then :
-  withval=$with_sharedir_arch; sharedir_arch=$withval
+# Check whether --with-sharearch-dir was given.
+if test "${with_sharearch_dir+set}" = set; then :
+  withval=$with_sharearch_dir; sharearch_dir=$withval
 else
-  sharedir_arch="${DATA_DIR}"
+  sharearch_dir="${DATA_DIR}"
 fi
 
 
-eval "eval SHAREDIR_ARCH=$sharedir_arch"
-SHAREDIR_ARCH="$sharedir_arch"
+eval "eval SHAREARCH_DIR=$sharearch_dir"
+SHAREARCH_DIR="$sharearch_dir"
 
 
 #
@@ -31909,8 +31910,8 @@
 
 # Path to ImageMagick header files
 INCLUDE_RELATIVE_PATH="ImageMagick"
-INCLUDE_PATH="${INCLUDEDIR_ARCH}/${INCLUDE_RELATIVE_PATH}"
-DEFINE_INCLUDE_PATH="${INCLUDEDIR_ARCH}/${INCLUDE_RELATIVE_PATH}/"
+INCLUDE_PATH="${INCLUDEARCH_DIR}/${INCLUDE_RELATIVE_PATH}"
+DEFINE_INCLUDE_PATH="${INCLUDEARCH_DIR}/${INCLUDE_RELATIVE_PATH}/"
 case "${build_os}" in
   mingw* )
     DEFINE_INCLUDE_PATH=`$WinPathScript "$DEFINE_INCLUDE_PATH" 1`
@@ -32050,7 +32051,7 @@
 #define SHARE_RELATIVE_PATH "$SHARE_RELATIVE_PATH"
 _ACEOF
 
-SHARE_PATH="${SHAREDIR_ARCH}/${SHARE_RELATIVE_PATH}"
+SHARE_PATH="${DATA_DIR}/${SHARE_RELATIVE_PATH}"
 DEFINE_SHARE_PATH="${DATA_DIR}/${SHARE_RELATIVE_PATH}/"
 case "${build_os}" in
   mingw* )
@@ -32064,6 +32065,27 @@
 
 
 
+# Subdirectory to place architecture-independent configuration files
+SHAREARCH_RELATIVE_PATH="${LIBRARY_RELATIVE_PATH}"
+
+cat >>confdefs.h <<_ACEOF
+#define SHAREARCH_RELATIVE_PATH "$SHAREARCH_RELATIVE_PATH"
+_ACEOF
+
+SHAREARCH_PATH="${DATA_DIR}/${SHAREARCH_RELATIVE_PATH}"
+DEFINE_SHAREARCH_PATH="${DATA_DIR}/${SHAREARCH_RELATIVE_PATH}/"
+case "${build_os}" in
+  mingw* )
+    DEFINE_SHAREARCH_PATH=`$WinPathScript "$DEFINE_SHAREARCH_PATH" 1`
+    ;;
+esac
+
+cat >>confdefs.h <<_ACEOF
+#define SHAREARCH_PATH "$DEFINE_SHAREARCH_PATH"
+_ACEOF
+
+
+
 #
 # program_transform_name is formed for use in a Makefile, so create a
 # modified version for use in a shell script.
diff --git a/configure.ac b/configure.ac
index c539308..e1d6ad3 100755
--- a/configure.ac
+++ b/configure.ac
@@ -379,27 +379,27 @@
 #
 # ARCH specific include directory
 #
-AC_ARG_WITH([includedir-arch],
-    [AC_HELP_STRING([--includedir-arch=DIR],
+AC_ARG_WITH([includearch-dir],
+    [AC_HELP_STRING([--includearch-dir=DIR],
                     [ARCH specific include directory])],
-                    [includedir_arch=$withval],
-                    [includedir_arch=$INCLUDE_DIR])
+                    [includearch_dir=$withval],
+                    [includearch_dir=$INCLUDE_DIR])
 
-eval "eval INCLUDEDIR_ARCH=$includedir_arch"
-AC_SUBST(INCLUDEDIR_ARCH)
+eval "eval INCLUDEARCH_DIR=$includearch_dir"
+AC_SUBST(INCLUDEARCH_DIR)
 
 #
 # ARCH specific configuration directory
 #
-AC_ARG_WITH([sharedir-arch],
-    [AC_HELP_STRING([--sharedir-arch=DIR],
+AC_ARG_WITH([sharearch-dir],
+    [AC_HELP_STRING([--sharearch-dir=DIR],
                     [ARCH specific config directory])],
-                    [sharedir_arch=$withval],
-                    [sharedir_arch="${DATA_DIR}"])
+                    [sharearch_dir=$withval],
+                    [sharearch_dir="${DATA_DIR}"])
 
-eval "eval SHAREDIR_ARCH=$sharedir_arch"
-SHAREDIR_ARCH="$sharedir_arch"
-AC_SUBST(SHAREDIR_ARCH)
+eval "eval SHAREARCH_DIR=$sharearch_dir"
+SHAREARCH_DIR="$sharearch_dir"
+AC_SUBST(SHAREARCH_DIR)
 
 #
 # Enable support for threads
@@ -2876,8 +2876,8 @@
 
 # Path to ImageMagick header files
 INCLUDE_RELATIVE_PATH="ImageMagick"
-INCLUDE_PATH="${INCLUDEDIR_ARCH}/${INCLUDE_RELATIVE_PATH}"
-DEFINE_INCLUDE_PATH="${INCLUDEDIR_ARCH}/${INCLUDE_RELATIVE_PATH}/"
+INCLUDE_PATH="${INCLUDEARCH_DIR}/${INCLUDE_RELATIVE_PATH}"
+DEFINE_INCLUDE_PATH="${INCLUDEARCH_DIR}/${INCLUDE_RELATIVE_PATH}/"
 case "${build_os}" in
   mingw* )
     DEFINE_INCLUDE_PATH=`$WinPathScript "$DEFINE_INCLUDE_PATH" 1`
@@ -2969,7 +2969,7 @@
 # Subdirectory to place architecture-independent configuration files
 SHARE_RELATIVE_PATH="${LIBRARY_RELATIVE_PATH}"
 AC_DEFINE_UNQUOTED(SHARE_RELATIVE_PATH,"$SHARE_RELATIVE_PATH",Subdirectory of lib where architecture-independent configuration files live.)
-SHARE_PATH="${SHAREDIR_ARCH}/${SHARE_RELATIVE_PATH}"
+SHARE_PATH="${DATA_DIR}/${SHARE_RELATIVE_PATH}"
 DEFINE_SHARE_PATH="${DATA_DIR}/${SHARE_RELATIVE_PATH}/"
 case "${build_os}" in
   mingw* )
@@ -2979,6 +2979,19 @@
 AC_DEFINE_UNQUOTED(SHARE_PATH,"$DEFINE_SHARE_PATH",Directory where architecture-independent configuration files live.)
 AC_SUBST(SHARE_PATH)
 
+# Subdirectory to place architecture-independent configuration files
+SHAREARCH_RELATIVE_PATH="${LIBRARY_RELATIVE_PATH}"
+AC_DEFINE_UNQUOTED(SHAREARCH_RELATIVE_PATH,"$SHAREARCH_RELATIVE_PATH",Subdirectory of lib where architecture-independent configuration files live.)
+SHAREARCH_PATH="${DATA_DIR}/${SHAREARCH_RELATIVE_PATH}"
+DEFINE_SHAREARCH_PATH="${DATA_DIR}/${SHAREARCH_RELATIVE_PATH}/"
+case "${build_os}" in
+  mingw* )
+    DEFINE_SHAREARCH_PATH=`$WinPathScript "$DEFINE_SHAREARCH_PATH" 1`
+    ;;
+esac
+AC_DEFINE_UNQUOTED(SHAREARCH_PATH,"$DEFINE_SHAREARCH_PATH",Directory where architecture-independent configuration files live.)
+AC_SUBST(SHAREARCH_PATH)
+
 #
 # program_transform_name is formed for use in a Makefile, so create a
 # modified version for use in a shell script.