code: def _sample_aAt(self,n):
          
          # Use streamdf's _sample_aAt to generate unperturbed frequencies,
          # angles
          Om,angle,dt= super(streamgapdf,self)._sample_aAt(n)
          # Now rewind angles by timpact, apply the kicks, and run forward again
          dangle_at_impact= angle-numpy.tile(self._progenitor_angle.T,(n,1)).T\
              -(Om-numpy.tile(self._progenitor_Omega.T,(n,1)).T)*self._timpact
          dangle_par_at_impact= numpy.dot(dangle_at_impact.T,
                                          self._dsigomeanProgDirection)\
                                          *self._gap_sigMeanSign
          # Calculate and apply kicks (points not yet released have zero kick)
          dOr= self._kick_interpdOr(dangle_par_at_impact)
          dOp= self._kick_interpdOp(dangle_par_at_impact)
          dOz= self._kick_interpdOz(dangle_par_at_impact)
          Om[0,:]+= dOr
          Om[1,:]+= dOp
          Om[2,:]+= dOz
          angle[0,:]+=\
              self._kick_interpdar(dangle_par_at_impact)+dOr*self._timpact
          angle[1,:]+=\
              self._kick_interpdap(dangle_par_at_impact)+dOp*self._timpact
          angle[2,:]+=\
              self._kick_interpdaz(dangle_par_at_impact)+dOz*self._timpact
          return (Om,angle,dt)
docs: Sampling frequencies, angles, and times part of sampling, for stream with gap