How do you have the Z0 home position (or Z origin) configured?
If you have the machine configured such that the machine coordinate system's Z0 position is at the bottom of travel. What you are seeing happen would be the expected behavior.
It is the general convention that the machine's Z origin point (Z0) will be at the top of the Z travel, and that this is where the machine homes to.
If for example your machine has 12" of Z travel. You home the machine at the top of that travel, that point will be called Z0. All movement in the machine coordinate system (G53) will be negative.
You then use G54 (or an other work coordinate system) to set Z0 at your work surface, you will then have positive travel above that and that is the number that will be displayed on the DRO. If configured this way commanding a G53Z0 or G91G28Z0 will move the Z axis to the top of travel.
However if you configured the machine coordinate Z origin for any other position (such as the bottom of travel) then those commands will move the Z axis to that position. If you wanted a command to move to the top of the machine's 12" travel you would need to command G53Z12 in this case.
G91G28Z0 is a common Fanuc command. Not every Fanuc control has a G53 command option, but they all do G28. With Fanuc a G28 command will move the machine to the machine origin via an intermediary point (that point defined by the axis commands after the G28). Issuing a G91 before the G28 and a Z0 after, will move the machine zero distance to the intermediary point then to the Z origin (so no intermediary point.) If the G91 were left out and the machine is in G90 mode, the machine would rapid move to the current work coordinate Z0 point then rapid to the Z origin point. Doing that will have disastrous consequences on most machines in many situations.
(Don't ask me why, it's a weird Fanuc quirk that I've never understood either, but everyone has to work with it and why it's seen a lot and why I think it showed up in your post processor.)