I would guess, as I am not the developer of the VIs or underlying DLL, that the DLL code is doing something as simple as saying, if the READ location pointer is equal to the WRITE location pointer, the FIFO is empty. If this is the case, then a FIFO of size = 1 would always return saying it was empty, as the READ / WRITE pointer are always both pointing to the same one element.
To answer your question, a read to a FIFO of size = 2 would always return the first value written, not the last value written (First In, First Out). If you do not need a buffer and are only concerned with the last value written, I would highly recommend replacing your use of RTFIFOs with global variables, or for better performance, "functional global variables". For more information on fun
ctional global variables, see the link below.
NI Developer Zone: Improving Determinism with Functional Globals, LabVIEW 2-Style Globals, in LabVIE...