Clarification on IFC support for negative lag times, negative IfcDurations, and lag vs lead times

IfcRelSequence supports a TimeLag attribute, which stores an IfcLagTime.

The lag time lets you offset the dependency. However, IFC does not differentiate between lag and lead time. This is OK, assuming that the IfcLagTime can store a positive or negative value. However, it is ambiguous as to whether or not the IfcDuration, which is based on ISO 8601, allowed negative values.

I haven’t actually read the original ISO 8601, but based on some evidence from a quick search online, it seems as though ISO 8601 actually does not talk about negativity at all. A conservative approach might mean that you should not support negative ISO 8601 values, and instead the IFC schema needs to be extended to capture the potential negativity of a lag time, such as in another new attribute.

An optimistic alternative approach might follow some of the conventions for denoting negativity in durations, but there are a few approaches. For example -P1D or P-1D. So, what happens when you do P-1DT12H? Crazy stuff.

This omission in the spec means that unless you support some form of negative convention, you cannot currently actually practically use IFC for sequencing.

My preference is to simply support a convention to solve this currently, and in the future.

Further reading on ISO 8601 negativity: