private void checkForTermination(int timezone) {
        TerminationCounter counterT = terminationCounters.get(timezone);
        //if counter for timezone is not balanced, skip further checks
        logger.info("Balance: " + counterT.getSentMessages() + " / " + counterT.getReceivedMessages());
        if (counterT.isBalanced() && counterT.isNotEmpty()) {
            TerminationCounter counterPrev = terminationCounters.get(timezone - 1);
            TerminationCounter counterNext = terminationCounters.get(timezone + 1);
            if (counterPrev != null) {
                if (counterPrev.isBalanced() && counterPrev.isNotEmpty()) {
                    //T and T-1 are balanced
                    keepRunning = false;
                    logger.info("Termination reached! Messages sent: " + counterT.getSentMessages() + " Messages received: " + counterT.getReceivedMessages());
                } else {
                    if (counterNext != null && counterNext.isBalanced() && counterNext.isNotEmpty()) {
                        //T and T+1 are balanced
                        keepRunning = false;
                        logger.info("Termination reached! Messages sent: " + counterT.getSentMessages() + " Messages received: " + counterT.getReceivedMessages());
                    }
                }
            }
        }
    }