private float getBalance(Calendar cellDate) {
    float balance = 0;

    Time selectedDate = new Time();
    selectedDate.set(cellDate.getTimeInMillis());

    Time inputDate = new Time();

    for (Finance_Input input : inputs) {
      inputDate.set(input.getOccurs().toMillis(false));
      boolean onetime = false;
      while ((inputDate.before(selectedDate) || inputDate.equals(selectedDate))
          && !onetime
          && input.getAmount() > 0) {
        if (input.getType().equals(Finance_Constants.INCOME)) {
          balance += input.getAmount();
        } else {
          balance -= input.getAmount();
        }
        inputDate = Finance_Util.adjustDate(input.getOccurstype(), inputDate);
        if (input.getOccurstype().equals(Finance_Constants.OCCURTYPE_ONETIME)) {
          onetime = true;
        }
      }
    }

    return balance;
  }