This seems overly complicated. Since your datapoints are spaced equally in time, it seems silly to do the waveform datatype. Writing a new t0 with every write is a really poor choice. That should only be done once. You also should not change the time interval with a user control during the run. Using elapsed time is overly complicated, all you need to do is check if [i] is a vertain multiple of the wait.
Wy are your data source indicators, forcing you to use local variables?
You don't have four charts. You only have one chart with four stacked plots. What you can do is create two charts, one with three plots and one with one plot.