Program: 79320
Project: 79320
Buggy source:
/** 
 * Returns an auto computed decimal format pattern for representing axis labels on a numeric axis
 * @return
 */
public final String getNumericPattern(){
  final double dMinValue=asDouble(oMinimum).doubleValue();
  final double dStep=asDouble(oStep).doubleValue();
  if ((iType & LOGARITHMIC) == LOGARITHMIC) {
    final DecimalFormatSymbols dfs=new DecimalFormatSymbols();
    final String sMinimum=oMinimum.toString();
    final int iDecimalPosition=sMinimum.indexOf(dfs.getDecimalSeparator());
    if (iDecimalPosition >= 0) {
      int n=sMinimum.length();
      for (int i=n - 1; i > 0; i--) {
        if (sMinimum.charAt(i) == '0') {
          n--;
        }
 else {
          break;
        }
      }
      final int iMantissaCount=n - 1 - iDecimalPosition;
      final StringBuffer sb=new StringBuffer(sNumericPattern);
      sb.append('.');
      for (int i=0; i < iMantissaCount; i++) {
        sb.append('0');
      }
      return sb.toString();
    }
 else {
      return sNumericPattern;
    }
  }
  if (dMinValue - (int)dMinValue == 0 && dStep - (int)dStep == 0) {
    return sNumericPattern;
  }
  final DecimalFormatSymbols dfs=new DecimalFormatSymbols();
  final String sStep=oStep.toString();
  final int iDecimalPosition=sStep.indexOf(dfs.getDecimalSeparator());
  if (iDecimalPosition >= 0) {
    int n=sStep.length();
    for (int i=n - 1; i > 0; i--) {
      if (sStep.charAt(i) == '0') {
        n--;
      }
 else {
        break;
      }
    }
    final int iMantissaCount=n - 1 - iDecimalPosition;
    final StringBuffer sb=new StringBuffer(sNumericPattern);
    sb.append('.');
    for (int i=0; i < iMantissaCount; i++) {
      sb.append('0');
    }
    return sb.toString();
  }
 else {
    return sNumericPattern;
  }
}

Fixed version (ground truth):
/** 
 * Returns an auto computed decimal format pattern for representing axis labels on a numeric axis
 * @return
 */
public final String getNumericPattern(){
  if (oMinimum == null || oStep == null) {
    return "String_Node_Str";
  }
  final double dMinValue=asDouble(oMinimum).doubleValue();
  final double dStep=asDouble(oStep).doubleValue();
  if ((iType & LOGARITHMIC) == LOGARITHMIC) {
    final DecimalFormatSymbols dfs=new DecimalFormatSymbols();
    final String sMinimum=oMinimum.toString();
    final int iDecimalPosition=sMinimum.indexOf(dfs.getDecimalSeparator());
    if (iDecimalPosition >= 0) {
      int n=sMinimum.length();
      for (int i=n - 1; i > 0; i--) {
        if (sMinimum.charAt(i) == '0') {
          n--;
        }
 else {
          break;
        }
      }
      final int iMantissaCount=n - 1 - iDecimalPosition;
      final StringBuffer sb=new StringBuffer(sNumericPattern);
      sb.append('.');
      for (int i=0; i < iMantissaCount; i++) {
        sb.append('0');
      }
      return sb.toString();
    }
 else {
      return sNumericPattern;
    }
  }
  if (dMinValue - (int)dMinValue == 0 && dStep - (int)dStep == 0) {
    return sNumericPattern;
  }
  final DecimalFormatSymbols dfs=new DecimalFormatSymbols();
  final String sStep=oStep.toString();
  final int iDecimalPosition=sStep.indexOf(dfs.getDecimalSeparator());
  if (iDecimalPosition >= 0) {
    int n=sStep.length();
    for (int i=n - 1; i > 0; i--) {
      if (sStep.charAt(i) == '0') {
        n--;
      }
 else {
        break;
      }
    }
    final int iMantissaCount=n - 1 - iDecimalPosition;
    final StringBuffer sb=new StringBuffer(sNumericPattern);
    sb.append('.');
    for (int i=0; i < iMantissaCount; i++) {
      sb.append('0');
    }
    return sb.toString();
  }
 else {
    return sNumericPattern;
  }
}