If any time series function e.g. CUMULATE, DECUMULATE, POST, OFFSET, LAG, LEAD, SPREAD, or MOVINGSUM is used as an argument to another time series function it's advisable to assign the inner argument to a separate line item.
For example, suppose you want to delay by a certain number of months then apply a payment profile:
Use one line item to work out the profile:
X = PROFILE(Sales Units, Profile.Build Unit Profile)
Then refer to X in the main formula:
Result = OFFSET(X, Module Y.Lag Months, 0)"
There are already optimizations for certain cases e.g. POST or OFFSET with a constant offset behaves like a ‘normal' argument, so for example CUMULATE(POST(x, 12)) … does not suffer from the same performance issue.