int bucket_start = convertTimeToBucket(start, true);
int bucket_start = convertTimeToBucket(start, false);
    public void addWithdrawProjection(Task task) {        if (!task.getVerb().equals(Constants.Verb.PROJECTWITHDRAW)) { // assertion/pre-condition            Exception exception = new Exception("Adding non-PROJECTWITHDRAW task to inventory BG");            logger.error(".addWithdrawProjection - adding non-PROJECTWITHDRAW task " + task +                         " to inventory BG.", exception);        }        // Adding projections mean changed critical levels and        // target levels.  Set boolean to recompute critical        // levels and clear targetLevelsList for CSV logging        compute_critical_levels = true;        targetLevelsList.clear();        long start = taskUtils.getStartTime(task);        long end = taskUtils.getEndTime(task);        int bucket_start = convertTimeToBucket(start, true);        int bucket_end = convertTimeToBucket(end, true);        if (bucket_end >= projectedDemandArray.length) {            projectedDemandArray = expandArray(projectedDemandArray);        }        while (bucket_end >= dueOutList.size()) {            dueOutList.add(new ArrayList());        }//      System.out.println("Task start: "+TimeUtils.dateString(start)+" end  : "+TimeUtils.dateString(end));//      System.out.println("bucket start "+bucket_start+", bucket end "+bucket_end);        for (int i = bucket_start; i < bucket_end; i++) {            ArrayList list = (ArrayList) dueOutList.get(i);            list.add(task);            updateProjectedDemandList(task, i, start, end, true);        }    }