should we check here that `len(self.time[index]) == p` ?
 it works if `<` but doesn't fill all columns and rows