code: def transformNull(requestContext, seriesList, default=0, referenceSeries=None):
      
      def transform(v, d):
          if v is None:
              return d
          else:
              return v
  
      if referenceSeries:
          defaults = [default if any(v is not None for v in x) else None
                      for x in zip_longest(*referenceSeries)]
      else:
          defaults = None
  
      for series in seriesList:
          if referenceSeries:
              series.name = "transformNull(%s,%g,referenceSeries)" % (
                  series.name, default)
          else:
              series.name = "transformNull(%s,%g)" % (series.name, default)
          series.pathExpression = series.name
          if defaults:
              values = [transform(v, d) for v, d in zip_longest(series,
                                                                defaults)]
          else:
              values = [transform(v, default) for v in series]
          series.extend(values)
          del series[:len(values)]
      return seriesList
docs: Takes a metric or wildcard seriesList and replaces null values with
      the value specified by `default`.  The value 0 used if not specified.
      The optional referenceSeries, if specified, is a metric or wildcard
      series list that governs which time intervals nulls should be replaced.
      If specified, nulls are replaced only in intervals where a non-null is
      found for the same interval in any of referenceSeries. This method
      compliments the drawNullAsZero function in graphical mode, but also
      works in text-only mode.
  
      Example::
  
          &target=transformNull(webapp.pages.*.views,-1)
  
      This would take any page that didn't have values and supply negative 1 as
      a default. Any other numeric value may be used as well.