For background, he authored Conduit, one of the most popular Haskell stream-processing libraries:
Do Zerem and Conduit have compatible APIs?
I don't understand how the issue would appear in that case.
Buffering one value seems to be sufficient to upsample S to the "clock" of X, ie. project S to the instants where X is defined (flow Z below) while filling missing instants with the previously known value:
X : X0 X1 X2 X3 ...
S : S0 S1
Z : S0 S0 S1 S1
process test = (? integer x ! integer y)
(| c := not (c$ init false)
| s := (x when c) cell c
| y := x + s
The clock calculus in Signal (etc.) is way to assess if a program can be generated to use constant (static) memory allocation and constant time. There are programs which fail to do so, but you then need to refine them to add explicit operations (https://www.irisa.fr/prive/talpin/papers/date08.pdf)