public void InterestAndPenaltiesHelper(BankAccount currentBA)
    {
        /*//System.out.println("MSG HashTable.java: getting interest for account " + currentBA.getAccountName()
         + " with initial balance: " + currentBA.getBalance());*/
        // Divide the running daily total by the total number of days in the
        // month to obtain the daily average
        double dailyAverage = ((currentBA.getThisMonthsDailyTotals()) / (lastInterestDateTime.dayOfMonth().getMaximumValue()));
        // Check the various thresholds to see how much interest/penalty to apply
        if (dailyAverage <= 100)
        {
            currentBA.subPenalty(PENALTY_AMOUNT);
        }
        else if (dailyAverage >= 3000)
        {
            if (currentBA instanceof CheckingAccount)
                currentBA.addInterest((currentBA.getBalance() * CHECKING_RATE_OVER_3000));
            else
                currentBA.addInterest((currentBA.getBalance() * SAVINGS_RATE_OVER_3000));
        }
        else if (dailyAverage >= 2000 && dailyAverage < 3000)
        {
            if (currentBA instanceof CheckingAccount)
                currentBA.addInterest((currentBA.getBalance() * CHECKING_RATE_2000_TO_3000));
            else
                currentBA.addInterest((currentBA.getBalance() * SAVINGS_RATE_2000_TO_3000));
        }
        else if (dailyAverage < 2000 && dailyAverage >= 1000)
        {
            if (currentBA instanceof CheckingAccount)
                currentBA.addInterest((currentBA.getBalance() * CHECKING_RATE_1000_TO_2000));
            else
                currentBA.addInterest((currentBA.getBalance() * SAVINGS_RATE_1000_TO_2000));
        }
        // Reset the daily totals
        currentBA.setThisMonthsDailyTotals(0);
        /*//System.out.println("MSG HashTable.java: Calculated interest for account " + currentBA.getAccountName()
         + " with FINAL balance: " + currentBA.getBalance());*/
    }