private boolean processFields() {

        //
        // Get the starting principal
        //
        if (!principalField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid starting principal",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        principal = ((Double)principalField.getValue()).doubleValue();
    
        //
        // Get the annual withdrawal
        //
        if (!withdrawalField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid annual withdrawal",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        withdrawal = ((Double)withdrawalField.getValue()).doubleValue();
        
        //
        // Get the annual rate
        //
        if (!annualRateField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid annual rate",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        annualRate = ((Double)annualRateField.getValue()).doubleValue();
        
        //
        // Get the duration
        //
        if (!durationField.isEditValid()) {
            JOptionPane.showMessageDialog(this, "You must specify a valid duration",
                                          "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        duration = ((Integer)durationField.getValue()).intValue();
        if (duration <= 0) {
            JOptionPane.showMessageDialog(this, "The duration must be greater than zero",
                                            "Error", JOptionPane.ERROR_MESSAGE);
            return false;
        }
        
        //
        // Calculate the compounded result
        //
        compoundedPrincipal = principal;
        for (int year=0; year<duration; year++) {
            if (compoundedPrincipal > withdrawal) {
                compoundedPrincipal = (compoundedPrincipal-withdrawal)*(1.0+annualRate/100.0);
            } else {
                compoundedPrincipal = 0.0;
                break;
            }
        }
        
        return true;
    }