Merged the decimal-branch (revisions 54886 to 58140). Decimal is now
fully updated to the latests Decimal Specification (v1.66) and the
latests test cases (v2.56).

Thanks to Mark Dickinson for all his help during this process.
diff --git a/Lib/test/decimaltestdata/quantize.decTest b/Lib/test/decimaltestdata/quantize.decTest
index dc1b130..a60f1bf 100644
--- a/Lib/test/decimaltestdata/quantize.decTest
+++ b/Lib/test/decimaltestdata/quantize.decTest
@@ -1,6 +1,6 @@
 ------------------------------------------------------------------------
 -- quantize.decTest -- decimal quantize operation                     --
--- Copyright (c) IBM Corporation, 1981, 2004.  All rights reserved.   --
+-- Copyright (c) IBM Corporation, 1981, 2007.  All rights reserved.   --
 ------------------------------------------------------------------------
 -- Please see the document "General Decimal Arithmetic Testcases"     --
 -- at http://www2.hursley.ibm.com/decimal for the description of      --
@@ -17,11 +17,12 @@
 --   IBM UK, PO Box 31, Birmingham Road, Warwick CV34 5JL, UK         --
 --   mfc@uk.ibm.com                                                   --
 ------------------------------------------------------------------------
-version: 2.39
+version: 2.56
 
 -- Most of the tests here assume a "regular pattern", where the
 -- sign and coefficient are +1.
 -- 2004.03.15 Underflow for quantize is suppressed
+-- 2005.06.08 More extensive tests for 'does not fit'
 
 extended:    1
 precision:   9
@@ -123,10 +124,6 @@
 quax124 quantize   1.05  1e-3 ->  1.050
 quax125 quantize   1.05  1e-2 ->  1.05
 quax126 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
-quax127 quantize   1.05   1e0 ->  1 Inexact Rounded
-quax128 quantize   1.05  1e-3 ->  1.050
-quax129 quantize   1.05  1e-2 ->  1.05
-quax130 quantize   1.05  1e-1 ->  1.1 Inexact Rounded
 quax131 quantize   1.05   1e0 ->  1 Inexact Rounded
 quax132 quantize   1.06  1e-3 ->  1.060
 quax133 quantize   1.06  1e-2 ->  1.06
@@ -435,6 +432,102 @@
 quax472 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
 quax473 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
 
+precision: 7
+quax900 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax901 quantize   9.999E-15    1e-21 ->  9.999000E-15
+quax902 quantize   9.999E-15    1e-20 ->  9.99900E-15
+quax903 quantize   9.999E-15    1e-19 ->  9.9990E-15
+quax904 quantize   9.999E-15    1e-18 ->  9.999E-15
+quax905 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
+quax906 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax907 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax908 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax909 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax910 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax911 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax912 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax913 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax914 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax915 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax916 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax917 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax918 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax919 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax920 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax921 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax922 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax923 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+precision: 6
+quax930 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax931 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
+quax932 quantize   9.999E-15    1e-20 ->  9.99900E-15
+quax933 quantize   9.999E-15    1e-19 ->  9.9990E-15
+quax934 quantize   9.999E-15    1e-18 ->  9.999E-15
+quax935 quantize   9.999E-15    1e-17 ->  1.000E-14 Inexact Rounded
+quax936 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax937 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax938 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax939 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax940 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax941 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax942 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax943 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax944 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax945 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax946 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax947 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax948 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax949 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax950 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax951 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax952 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax953 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+precision: 3
+quax960 quantize   9.999E-15    1e-22 ->  NaN       Invalid_operation
+quax961 quantize   9.999E-15    1e-21 ->  NaN       Invalid_operation
+quax962 quantize   9.999E-15    1e-20 ->  NaN       Invalid_operation
+quax963 quantize   9.999E-15    1e-19 ->  NaN       Invalid_operation
+quax964 quantize   9.999E-15    1e-18 ->  NaN       Invalid_operation
+quax965 quantize   9.999E-15    1e-17 ->  NaN       Invalid_operation
+quax966 quantize   9.999E-15    1e-16 ->  1.00E-14  Inexact Rounded
+quax967 quantize   9.999E-15    1e-15 ->  1.0E-14   Inexact Rounded
+quax968 quantize   9.999E-15    1e-14 ->  1E-14     Inexact Rounded
+quax969 quantize   9.999E-15    1e-13 ->  0E-13     Inexact Rounded
+quax970 quantize   9.999E-15    1e-12 ->  0E-12     Inexact Rounded
+quax971 quantize   9.999E-15    1e-11 ->  0E-11     Inexact Rounded
+quax972 quantize   9.999E-15    1e-10 ->  0E-10     Inexact Rounded
+quax973 quantize   9.999E-15     1e-9 ->  0E-9      Inexact Rounded
+quax974 quantize   9.999E-15     1e-8 ->  0E-8      Inexact Rounded
+quax975 quantize   9.999E-15     1e-7 ->  0E-7      Inexact Rounded
+quax976 quantize   9.999E-15     1e-6 ->  0.000000  Inexact Rounded
+quax977 quantize   9.999E-15     1e-5 ->  0.00000   Inexact Rounded
+quax978 quantize   9.999E-15     1e-4 ->  0.0000    Inexact Rounded
+quax979 quantize   9.999E-15     1e-3 ->  0.000     Inexact Rounded
+quax980 quantize   9.999E-15     1e-2 ->  0.00      Inexact Rounded
+quax981 quantize   9.999E-15     1e-1 ->  0.0       Inexact Rounded
+quax982 quantize   9.999E-15      1e0 ->  0         Inexact Rounded
+quax983 quantize   9.999E-15      1e1 ->  0E+1      Inexact Rounded
+
+-- Fung Lee's case & similar
+precision: 3
+quax1001 quantize  0.000        0.001 ->  0.000
+quax1002 quantize  0.001        0.001 ->  0.001
+quax1003 quantize  0.0012       0.001 ->  0.001     Inexact Rounded
+quax1004 quantize  0.0018       0.001 ->  0.002     Inexact Rounded
+quax1005 quantize  0.501        0.001 ->  0.501
+quax1006 quantize  0.5012       0.001 ->  0.501     Inexact Rounded
+quax1007 quantize  0.5018       0.001 ->  0.502     Inexact Rounded
+quax1008 quantize  0.999        0.001 ->  0.999
+quax1009 quantize  0.9992       0.001 ->  0.999     Inexact Rounded
+quax1010 quantize  0.9998       0.001 ->  NaN       Invalid_operation
+quax1011 quantize  1.0001       0.001 ->  NaN       Invalid_operation
+quax1012 quantize  1.0051       0.001 ->  NaN       Invalid_operation
+quax1013 quantize  1.0551       0.001 ->  NaN       Invalid_operation
+quax1014 quantize  1.5551       0.001 ->  NaN       Invalid_operation
+quax1015 quantize  1.9999       0.001 ->  NaN       Invalid_operation
+
 -- long operand checks [rhs checks removed]
 maxexponent: 999
 minexponent: -999
@@ -775,6 +868,81 @@
 quax865 quantize   1  1e-2147483648 -> NaN Invalid_operation
 quax866 quantize   1  1e-2147483649 -> NaN Invalid_operation
 
+-- More from Fung Lee
+precision:   16
+rounding:    half_up
+maxExponent: 384
+minExponent: -383
+quax1021 quantize    8.666666666666000E+384     1.000000000000000E+384  -> 8.666666666666000E+384
+quax1022 quantize 64#8.666666666666000E+384  64#1.000000000000000E+384  -> 8.666666666666000E+384
+quax1023 quantize 64#8.666666666666000E+384  128#1.000000000000000E+384 -> 8.666666666666000E+384
+quax1024 quantize 64#8.666666666666000E+384  64#1E+384                  -> 8.666666666666000E+384
+quax1025 quantize 64#8.666666666666000E+384  64#1E+384   -> 64#8.666666666666000E+384
+quax1026 quantize 64#8.666666666666000E+384 128#1E+384   -> 64#9E+384 Inexact Rounded Clamped
+quax1027 quantize 64#8.666666666666000E+323  64#1E+31    -> NaN Invalid_operation
+quax1028 quantize 64#8.666666666666000E+323 128#1E+31    -> NaN Invalid_operation
+quax1029 quantize 64#8.66666666E+3          128#1E+10    -> 64#0E10 Inexact Rounded
+quax1030 quantize    8.66666666E+3              1E+3     -> 9E+3 Inexact Rounded
+
+-- Int and uInt32 edge values for testing conversions
+quax1040 quantize -2147483646     0 -> -2147483646
+quax1041 quantize -2147483647     0 -> -2147483647
+quax1042 quantize -2147483648     0 -> -2147483648
+quax1043 quantize -2147483649     0 -> -2147483649
+quax1044 quantize  2147483646     0 ->  2147483646
+quax1045 quantize  2147483647     0 ->  2147483647
+quax1046 quantize  2147483648     0 ->  2147483648
+quax1047 quantize  2147483649     0 ->  2147483649
+quax1048 quantize  4294967294     0 ->  4294967294
+quax1049 quantize  4294967295     0 ->  4294967295
+quax1050 quantize  4294967296     0 ->  4294967296
+quax1051 quantize  4294967297     0 ->  4294967297
+-- and powers of ten for same
+quax1101 quantize  5000000000     0 ->  5000000000
+quax1102 quantize  4000000000     0 ->  4000000000
+quax1103 quantize  2000000000     0 ->  2000000000
+quax1104 quantize  1000000000     0 ->  1000000000
+quax1105 quantize  0100000000     0 ->  100000000
+quax1106 quantize  0010000000     0 ->  10000000
+quax1107 quantize  0001000000     0 ->  1000000
+quax1108 quantize  0000100000     0 ->  100000
+quax1109 quantize  0000010000     0 ->  10000
+quax1110 quantize  0000001000     0 ->  1000
+quax1111 quantize  0000000100     0 ->  100
+quax1112 quantize  0000000010     0 ->  10
+quax1113 quantize  0000000001     0 ->  1
+quax1114 quantize  0000000000     0 ->  0
+-- and powers of ten for same
+quax1121 quantize -5000000000     0 -> -5000000000
+quax1122 quantize -4000000000     0 -> -4000000000
+quax1123 quantize -2000000000     0 -> -2000000000
+quax1124 quantize -1000000000     0 -> -1000000000
+quax1125 quantize -0100000000     0 -> -100000000
+quax1126 quantize -0010000000     0 -> -10000000
+quax1127 quantize -0001000000     0 -> -1000000
+quax1128 quantize -0000100000     0 -> -100000
+quax1129 quantize -0000010000     0 -> -10000
+quax1130 quantize -0000001000     0 -> -1000
+quax1131 quantize -0000000100     0 -> -100
+quax1132 quantize -0000000010     0 -> -10
+quax1133 quantize -0000000001     0 -> -1
+quax1134 quantize -0000000000     0 -> -0
+
+-- Some miscellany
+precision:   34
+rounding:    half_up
+maxExponent: 6144
+minExponent: -6143
+--                             1         2         3
+--                   1 234567890123456789012345678901234
+quax0a1 quantize     8.555555555555555555555555555555555E+6143  1E+6143      -> 9E+6143   Inexact Rounded
+quax0a2 quantize 128#8.555555555555555555555555555555555E+6143  128#1E+6143  -> 8.55555555555555555555555555555556E+6143   Rounded Inexact
+quax0a3 quantize 128#8.555555555555555555555555555555555E+6144  128#1E+6144  -> 8.555555555555555555555555555555555E+6144
+
+-- payload decapitate
+precision: 5
+quax62100 quantize 11 -sNaN1234567890 -> -NaN67890  Invalid_operation
+
 -- Null tests
-quax900 quantize 10    # -> NaN Invalid_operation
-quax901 quantize  # 1e10 -> NaN Invalid_operation
+quax998 quantize 10    # -> NaN Invalid_operation
+quax999 quantize  # 1e10 -> NaN Invalid_operation