Help me understand snd-fft boundary behavior

Are these statements correct:

The first frame from (snd-fft snd length skip window) is calculated from the first length samples.

The number of frames returned before returning nil is (snd-length snd ny:all) divided by skip and rounded down.

Therefore when the window is longer than the skip, there is padding of the signal with zeroes for the last frames, but not for early frames.

I surmized that the amount of returned Frames would also depend on the magical number 1020 from the internal buffer (not the case , see the code).
An example, where this number has an influence would be with ‘(snd-avg s 1020 1020 op-average)’:
Your Sound has
1020 samples > 1 returned value
1020 + 509 samples > 1 value
1020 + 510 samples > 2 values.
This means that the last Frame is only returned if the remaining samples are equal to half of the length of the (internal fetch-) buffer.
However, this seems not to be the case with fft.
It is enough when one sample remains to calculate the last Frame.

(psetq win 512
      step 256
      s-len 1281)
(setf snd (snd-const 1 0 44100 (/ s-len *sound-srate*)))
(dotimes (i 50)
   (setf fft (snd-fft snd win step nil))
   (cond
         (fft 
(format t "Start ~a Stop ~a Frame ~a
Available Smps ~a~%" 
                  (* i step) (+ win (* step i)) i
                  (- s-len (* (1+ i) 256)) ))
         (t nil)))