double dMinAxis = Math.pow(dStep, iPow - 1);
double dMinAxis = Math.pow(dStep, iPow + 1);
    final void updateAxisMinMax(Object oMinValue, Object oMaxValue)    {        if ((iType & LOGARITHMIC) == LOGARITHMIC)        {            if ((iType & PERCENT) == PERCENT)            {                oMaximum = new Double(100);                oMinimum = new Double(1);                oStep = new Double(10);                bMaximumFixed = true;                bMinimumFixed = true;                bStepFixed = true;                return;            }            final double dMinValue = asDouble(oMinValue).doubleValue();            final double dMaxValue = asDouble(oMaxValue).doubleValue();            final double dAbsMax = Math.abs(dMaxValue);            final double dAbsMin = Math.abs(dMinValue);            final double dStep = asDouble(oStep).doubleValue();            final double dStepLog = Math.log(dStep);            int iPow = (int) Math.floor(Math.log(dAbsMax) / dStepLog) + 1;            double dMaxAxis = Math.pow(dStep, iPow);            iPow = (int) Math.floor(Math.log(dAbsMin) / dStepLog) - 1;            double dMinAxis = Math.pow(dStep, iPow - 1);            if (!bMaximumFixed)            {                oMaximum = new Double(dMaxAxis);            }            if (!bMinimumFixed)            {                oMinimum = new Double(dMinAxis);            }        }        else if ((iType & DATE_TIME) == DATE_TIME)        {            int iUnit = asInteger(oUnit);            int iStep = asInteger(oStep);            CDateTime cdtMinValue = asDateTime(oMinValue);            CDateTime cdtMaxValue = asDateTime(oMaxValue);            if (!bMinimumFixed)            {                oMinimum = cdtMinValue.backward(iUnit, iStep);            }            ((CDateTime) oMinimum).clearBelow(iUnit);            if (!bMaximumFixed)            {                oMaximum = cdtMaxValue.forward(iUnit, iStep);            }            ((CDateTime) oMaximum).clearBelow(iUnit);        }        else        {            final double dMinValue = asDouble(oMinValue).doubleValue();            final double dMaxValue = asDouble(oMaxValue).doubleValue();            final double dAbsMax = Math.abs(dMaxValue);            final double dAbsMin = Math.abs(dMinValue);            final double dStep = asDouble(oStep).doubleValue();            double dMinAxis = (dStep > 1) ? Math.floor(dAbsMin / dStep) : Math.round(dAbsMin / dStep);            dMinAxis *= dStep;            if (dMinAxis == dAbsMin)            {                dMinAxis += dStep;                if (dMinValue < 0)                {                    dMinAxis = -dMinAxis;                }                else if (dMinValue == 0)                {                    dMinAxis = 0;                }            }            else            {                if (dMinValue < 0)                {                    dMinAxis = -(dMinAxis + dStep);                }                else if (dMinAxis == dMinValue && dMinAxis != 0)                {                    dMinAxis -= dStep;                }            }            double dMaxAxis = (dStep > 1) ? Math.floor(dAbsMax / dStep) : Math.round(dAbsMax / dStep);            dMaxAxis *= dStep;            if (dMaxAxis == dAbsMax)            {                dMaxAxis += dStep;                if (dMaxValue == 0)                {                    dMaxAxis = 0;                }            }            else if (dMinAxis != dMaxValue)            {                if (dMaxValue < 0)                {                    dMaxAxis = -(dMaxAxis - dStep);                }                else if (dMaxValue > 0)                {                    if (dMaxAxis < dMaxValue)                    {                        dMaxAxis += dStep;                    }                }            }            if (dMinValue < 0 && dMaxValue < 0)                dMaxAxis = 0;            if (dMinValue > 0 && dMaxValue > 0)                dMinAxis = 0;            if (!bMaximumFixed)            {                oMaximum = new Double(dMaxAxis);            }            if (!bMinimumFixed)            {                oMinimum = new Double(dMinAxis);            }        }    }