The Universal Transverse Mercator (UTM) is not strictly divided in 6° width zones. There is exceptions for Norway and Svalbard, for historical reasons (UTM seems to have been designed by military around World War II).
- Between 56°N and 64°N, zone 32 is widened to 9° (at the expense of zone 31) to accommodate southwest Norway.
- Between 72°N and 84°N, zones 33 and 35 are widened to 12° to accommodate Svalbard. To compensate for these 12° wide zones, zones 31 and 37 are widened to 9° and zones 32, 34, and 36 are eliminated.
A nice image of UTM grid including the special cases is available on Wikimedia common (see the 31X, 33X, 35X, 37X and 32V cells). This image also covers the UPS cases (A, B, Y and Z cells, discussed below).
Since the CommonCRS.UTM(double, double) method already expects latitude and longitude arguments, it can easily be fixed without API change. However it would be a slight change in its behavior. An alternative is to deprecate the current UTM(double, double) method and create a new universal(double, double) method instead. That universal method would handle not only the Universal Transverse Mercator (UTM) projection with the above-cited special cases, but also Universal Polar Stereographic (UPS) projections for latitudes north of 84°N or south of 80°S.