code: def fill_buffer(heap_data, i_chan):
          
          # Calculate the time count and fraction.
          now = datetime.datetime.utcnow()
          time_full = now.timestamp()
          time_count = int(time_full)
          time_fraction = int((time_full - time_count) * (2**32 - 1))
          diff = now - (now.replace(hour=0, minute=0, second=0, microsecond=0))
          time_data = diff.seconds + 1e-6 * diff.microseconds
  
          # Write the data into the buffer.
          heap_data['visibility_timestamp_count'] = time_count
          heap_data['visibility_timestamp_fraction'] = time_fraction
          heap_data['correlator_output_data']['VIS'][:][:] = \
              time_data + i_chan * 1j
docs: Blocking function to populate data in the heap.
          This is run in an executor.