so i thought a litle about the meaning of the linspace, and the location of data in a period, and i realised i needed to just pass a period size one greater to the function, so that the tail of the last sample in the period was processed. it works, when doing that, with the simpler linspace: (Pdb) data = np.random.random(4) (Pdb) quaddata = np.concatenate([data]*4) (Pdb) p data array([0.40683351, 0.00094595, 0.74521147, 0.1613921 ]) (Pdb) p abs(micro_ift(micro_ft(quaddata, 5), 5, upsample=True)) array([0.40683351, 0.00094595, 0.74521147, 0.1613921 , 0.40683351, 0.00094595, 0.74521147, 0.1613921 , 0.40683351, 0.00094595, 0.74521147, 0.1613921 , 0.40683351, 0.00094595, 0.74521147, 0.1613921 ]) (Pdb) p abs(micro_ift(micro_ft(quaddata, 5), 5, upsample=True))[::5] array([0.40683351, 0.00094595, 0.74521147, 0.1613921 ]) i guess i'd like to figure out what meaning of N is needed to move that +1 into the body of the function