protected Duration restReduced() {
        Interval outer = new Interval(period.getEnd().minusWeeks(1), period.getEnd());
        Duration aDay = new Duration(24 * hoursToMillis);

        int reduced = intervals.countGaps(outer, aDay, Rest.REDUCED.getValue(), Rest.NORMAL.getValue());

        if (reduced >= MAX_REDUCED) {
            return null;
        }

        Duration gap = intervals.findGap(period, Rest.REDUCED.getValue());

        if (gap == null) {
            Duration currentGap = intervals.lastGap();
            return Rest.REDUCED.getValue().minus(currentGap);
        } else {
            return new Duration(0);
        }
    }