Try putting this before the second call to UpdateMaster
var biTTShipHead = BufferCopy.Copy<Erp.Tablesets.ShipHeadRow>(ds.ShipHead[0]);
biTTShipHead.RowMod = “”;
ds.ShipHead.Add(biTTShipHead);
The BO is updating the PackNum on the second UpdateMaster because the unmodified row is not present on the tableset, so it considers the row a new one.