code: def delay(requestContext, seriesList, steps):
      
      results = []
      for series in seriesList:
          newValues = []
          prev = []
          for val in series:
              if len(prev) < steps:
                  newValues.append(None)
                  prev.append(val)
                  continue
              newValues.append(prev.pop(0))
              prev.append(val)
          newName = "delay(%s,%d)" % (series.name, steps)
          newSeries = TimeSeries(newName, series.start, series.end, series.step,
                                 newValues)
          newSeries.pathExpression = newName
          results.append(newSeries)
      return results
docs: This shifts all samples later by an integer number of steps. This can be
      used for custom derivative calculations, among other things. Note: this
      will pad the early end of the data with None for every step shifted.
  
      This complements other time-displacement functions such as timeShift and
      timeSlice, in that this function is indifferent about the step intervals
      being shifted.
  
      Example::
  
          &target=divideSeries(server.FreeSpace,delay(server.FreeSpace,1))
  
      This computes the change in server free space as a percentage of the
      previous free space.