I have a method but it requires a number of cells on the order of N^2 where N is the number of products and requires maintaining a dummy version of the products list.
Define Lists: di01, di02
di01 represents your original list and di02 represents a clone of di01.
Elements: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
Lists need not have a Top Level Item.
Define List: OneState
Element: 'State'
List need not have a Top Level Item
Define Module: Data
Applies to: di01, OneState
Define Line Item: Data
Data Type: Number
This contains the data you wish to sum along di01.
Define Line Item: Cumulative Sum
Data Type: Number
Formula: Triangle.Data[SUM: Triangle.Cumulative]
Input the formula for this after the definition of the following module.
Define Module: di02 => di01
Applies to: di02
Define Line Item: Reference
Data Type: di01
Formula: FINDITEM('di01', NAME(ITEM('di02')))
Define Module: Triangle
Applies to di01, di02, OneState
Define Line Item: di02 Transfer
Applies To: di02, OneState
Data Type: Number
Formula: Data.Value[LOOKUP: 'di02 => di01'.Reference]
Define Line Item: Data
Data Type: Number
Formula: 'di02 Transfer'
Define Line Item: Cumulative
Data Type: OneState
Formula: IF VALUE(NAME(ITEM('di01'))) >= VALUE(NAME(ITEM('di02'))) THEN OneState.State ELSE BLANK
The use of the OneState dimension as a root dimension in all aggregation and calculation modules provides a lot of flexibility since you can SUM, AVERAGE, MIN, MAX and other things without the use of summary items and the SELECT function.