if alignment is 0 in the create(), the file starting address is rounded up to a page boundary (256), and it saves the requested file size, and won't let you write more than that (1000 in your case) -- at least that's how i read the code.
? I'm not sure what's reporting 1024 to you. if i create a 51-byte file, readdir() reports 51 bytes.
if you create an erasable file, then the starting address and length are rounded up to the blocksize() of the flash chip, and you would be able to write up to the reported file size.