long task_time = next_day - 1;
long task_time = next_day - 12 * TimeUtils.MSEC_PER_HOUR;
    private void expandProjectionTask(Task parent_task) {	double quantity = 0;	 if (parent_task.getVerb().equals(Constants.Verb.PROJECTSUPPLY)) {	     Rate r = TaskUtils.getRate(parent_task);	     if (r instanceof FlowRate) {		 quantity = ((FlowRate)r).getGallonsPerDay();	     } else if (r instanceof CountRate) {		 quantity = ((CountRate)r).getEachesPerDay();	     }	 }	 if (quantity <= 0) {	     printError("expandProjectionTask(), Quantity cannot be obtained from task: "+			TaskUtils.taskDesc(parent_task));	     return;	 }	long start_time = TaskUtils.getStartTime(parent_task);	long end_time = TaskUtils.getEndTime(parent_task);	Vector expand_tasks = new Vector();	NewTask withdrawTask = null;        while (start_time < end_time) {            long next_day = TimeUtils.pushToEndOfDay(start_time) + 1;            long task_end = Math.min(next_day, end_time);            long duration = task_end - start_time;            double this_quantity = (quantity  * duration) / TimeUtils.MSEC_PER_DAY;            long task_time = next_day - 1;            withdrawTask = createProjectSupplyWithdrawTask(parent_task, task_time, task_time, this_quantity);            expand_tasks.addElement(withdrawTask);            start_time = task_time + 1;	}        publishExpansion(parent_task, expand_tasks);    }