CalcDueDate Customization on POEntry

Here is a description of what is occuring to the CalcOurQty field (which I am not modifying!!). The following is a comma seperated list of CalcOurQty for each row. Each list represents the customization above running:

1,8,4,1,4
8,4,1,4,4
4,1,4,4,4
1,4,4,4,4
4,4,4,4,4

and sometimes I get an "Index -1" exception.

I just don't know how that is possible. My loop is correct!
I am trying to use a custom date field to change the CalcDueDate on all Joblines for a PO. It causes the 'CalcOurQty' field to get changed. The CalcOurtQty field takes the value of the next row in the dataview. The last row takes the value of the previous one.

Could someone tell me what  the heck I'm doing wrong here?

private void POEntryForm_BeforeToolClick(object sender, Epicor.Mfg.UI.FrameWork.BeforeToolClickEventArgs args)
{
if(args.Tool.Key.ToString()=="SaveTool")
{
Epicor.Mfg.UI.FrameWork.EpiTextBox num = (Epicor.Mfg.UI.FrameWork.EpiTextBox) csm.GetNativeControlReference("8ba8521a-29b9-4331-a5a8-04976bfc8a2a");
Epicor.Mfg.UI.FrameWork.EpiDateTimeEditor poDateThing = (Epicor.Mfg.UI.FrameWork.EpiDateTimeEditor) csm.GetNativeControlReference("ed3baf20-8718-446a-9c15-edbe0d42d9f0");
EpiDataView edvPO = ((EpiDataView)oTrans.EpiDataViews["POJobLines"]);

String poDate = String.Empty;
try {
poDate = poDateThing.Value.ToString();
}
catch(Exception exc)
{
}

if(! String.IsNullOrEmpty(poDate))
{
for(int i = 0; i < edvPO.dataView.Count; i++)
{
edvPO.dataView[i]["CalcDueDate"] = Convert.ToDateTime(poDate);
}
}
}
        }