private void statisticsAnomaliesTerminalShutdown(PrintWriter outFile)
  {
    ArrayList<ArrayList<String>> labels = null;

    ArrayList<Integer> numbers1633 = null;
    ArrayList<Integer> numbers1634 = null;
    ArrayList<Integer> numbers1635 = null;

    ArrayList<ArrayList<String>> pctLabels = null;
    ArrayList<Integer> pctNumbers1633 = null; // totals for each pct
    ArrayList<Integer> pctNumbers1634 = null; // totals for each pct
    ArrayList<Integer> pctNumbers1635 = null; // totals for each pct

    ArrayList<String> temp = null;

    FileUtils.logFile.printf("%s enter statisticsAnomaliesTerminalShutdown%n", TAG);

    //****************************************************************
    // 1633 Terminal shutdown
    // 1634 Terminal shutdown - DIE exit
    // 1635 Terminal shutdown - IPS exit
    labels = new ArrayList<ArrayList<String>>();
    numbers1633 = new ArrayList<Integer>();
    numbers1634 = new ArrayList<Integer>();
    numbers1635 = new ArrayList<Integer>();

    pctLabels = new ArrayList<ArrayList<String>>();
    pctNumbers1633 = new ArrayList<Integer>();
    pctNumbers1634 = new ArrayList<Integer>();
    pctNumbers1635 = new ArrayList<Integer>();

    for(String termKey: Globals.theTerms.keySet())
    {
      OneTerminal term = Globals.theTerms.get(termKey);

      // we test that the term is not a not-absentee term
      // because the default is to set both the booleans to true
      // so if the terminal isn't in the list then notAbsentee=true
      if(!term.isNotAbsentee()) continue;

      temp = new ArrayList<String>();
      temp.add(term.toStringPcts()); // sort first on pct number(s)
      temp.add(term.getIvoNumber()); // then on ivo number

      labels.add(temp);
      numbers1633.add(term.getEventCount("0001633"));
      numbers1634.add(term.getEventCount("0001634"));
      numbers1635.add(term.getEventCount("0001635"));

    }
    outFile.printf("%n********** ********** ********** ");
    outFile.printf("********** ********** **********%n%n");
    outFile.printf("%s Histogram of 'Terminal shutdown' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();

    // silly bubble sort by pct number 
    for(int i = 0; i < labels.size()-1; ++i)
    {
      for(int j = i+1; j < labels.size(); ++j)
      {
        if(labels.get(i).get(0).compareTo(labels.get(j).get(0)) > 0)
        {
          ArrayList<String> tempList = labels.get(i);
          labels.set(i, labels.get(j));
          labels.set(j, tempList);
          Integer tempInt = numbers1633.get(i);
          numbers1633.set(i, numbers1633.get(j));
          numbers1633.set(j, tempInt);
          tempInt = numbers1634.get(i);
          numbers1634.set(i, numbers1634.get(j));
          numbers1634.set(j, tempInt);
          tempInt = numbers1635.get(i);
          numbers1635.set(i, numbers1635.get(j));
          numbers1635.set(j, tempInt);
        }
      }
    }

    // total things up by precinct instead of by terminal
    int pctSub = 0;
    String oldPct = "";
    for(int i = 0; i < labels.size(); ++i)
    {
      String newPct = labels.get(i).get(0);
      if(oldPct.equals(newPct))
      {
        pctNumbers1633.set(pctSub, pctNumbers1633.get(pctSub) + numbers1633.get(i));
        pctNumbers1634.set(pctSub, pctNumbers1634.get(pctSub) + numbers1634.get(i));
        pctNumbers1635.set(pctSub, pctNumbers1635.get(pctSub) + numbers1635.get(i));
      }
      else
      {
        temp = new ArrayList<String>();
        temp.add(newPct);
        pctLabels.add(temp);

        pctNumbers1633.add(numbers1633.get(i));
        pctNumbers1634.add(numbers1634.get(i));
        pctNumbers1635.add(numbers1635.get(i));

        pctSub = pctLabels.size() - 1;

      }
      oldPct = newPct;
    } 

    // the 1633 by themselves
    outFile.printf("%n********** ********** ********** ");
    outFile.printf("********** ********** **********%n%n");
    outFile.printf("%s Histogram by terminal of '0001633 Terminal shutdown' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, labels, numbers1633, 100, 4, true);

    // the 1633 by precinct
    outFile.printf("%n%s Histogram by precinct of '0001633 Terminal shutdown' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, pctLabels, pctNumbers1633, 100, 4, true);

    // the 1634 by themselves
    outFile.printf("%n********** ********** ********** ");
    outFile.printf("********** ********** **********%n%n");
    outFile.printf("%s Histogram by terminal of '0001634 Terminal shutdown - DIE exit' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, labels, numbers1634, 100, 4, true);

    // the 1634 by precinct
    outFile.printf("%n%s Histogram by precinct of '0001634 Terminal shutdown' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, pctLabels, pctNumbers1634, 100, 4, true);

    // the 1635 by themselves
    outFile.printf("%n********** ********** ********** ");
    outFile.printf("********** ********** **********%n%n");
    outFile.printf("%s Histogram by terminal of '0001635 Terminal shutdown - IPS exit' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, labels, numbers1635, 100, 4, true);

    // the 1635 by precinct
    outFile.printf("%n%s Histogram by precinct of '0001635 Terminal shutdown' messages (EXCLUDES 750+)%n", TAG);
    outFile.flush();
    Statistics.doStats(outFile, pctLabels, pctNumbers1635, 100, 4, true);

    FileUtils.logFile.printf("%s leave statisticsAnomaliesTerminalShutdown%n", TAG);
  } // private void statisticsAnomaliesTerminalShutdown(PrintWriter outFile)