code: protected int getMaxDigits(final Map < Character, Integer > intCharNum,
              final char currencySymbol) {
          int maxDigits = intCharNum.get('9') + intCharNum.get('Z')
                  + intCharNum.get('*');
          if (intCharNum.get('+') > 0) {
              maxDigits += intCharNum.get('+') - 1;
          }
          if (intCharNum.get('-') > 0) {
              maxDigits += intCharNum.get('-') - 1;
          }
          if (intCharNum.get(currencySymbol) > 0) {
              maxDigits += intCharNum.get(currencySymbol) - 1;
          }
          return maxDigits;
      }
docs: The maximum number of digits supported by a numeric is given by its
  picture clause.
  <p/>
  Currency symbol, + and - can be used for floating insertion editing in
  which case they are repeated more than once.
  
  @param intCharNum the picture symbols map
  @param currencySymbol the currency symbol in use
  @return the maximum number of digits supported