Advances to the next value and returns an appropriate value for the given
    time.
    :param myDateTime: (datetime) when to fetch the value for 
    :return: (float|int) value for given time

def advance(self, myDateTime):
    """
    Advances to the next value and returns an appropriate value for the given
    time.
    :param myDateTime: (datetime) when to fetch the value for 
    :return: (float|int) value for given time
    """
    if self.getTime() == myDateTime:
      out =  self.next()
      # Sometimes, the stream has no value for this field and returns None, in 
      # this case we'll use the last value as well.
      if out is None:
        out = self.last()
    else:
      out = self.last()
    # If there's no more data, we must fetch more
    if len(self) is 0:
      self._fetchNextData()
    
    self._updateMinMax(out)
    
    if isinstance(out, float):
      self._dataType = "float"
    
    # Convert to proper data type
    if self._dataType is "float":
      out = float(out)
    else:
      out = int(out)

    return out