Ok, the recordset used by the add to cart button should use a join query to return the associated shipping rates.
in your cart object, create a column for baseShipping and another column for incrementalShipping.
in the add to cart button behavior, bind the baseShipping column to the PostageRate column in the products recordset, and bind the incrementalShipping column of the cart object to the PostageRateAdditional column from the products recordset.
on the calculations tab of the cart object, create a calculation as:
[baseShipping] + (abs([Quantity] > 1)?([Quantity]-1) * [incrementalShipping]:0)
then on the shipping tab, create a shipping rule to use the itemShipping calculation.
Set the trigger to:
Subtotal for any column:
if the column "itemShipping" is ">" a value of "0"
for the calculation, use:
Based on multiple of column subtotal:
Subtotal of column "itemShipping" "times" "1" "plus" "0"