I considered that, but in the first instance I thought it is better to keep the logic separate, so that the update function doesn't need to consider anything about how the GUIs are positioned and why, except that they are meant to be room-relative. With your method you'll either need another set of position coordinate variables for each GUI (and although that doesn't look so bad when it's just one of them, like in your example, I was imagining that there could be quite a few), or you'll have to copy all the original positioning logic to the update function.
As for the second case, if the characters/objects may move as well, and the GUIs need to be repositioned relative to them, then sure, you can't get away from the need to rerun the positioning logic. (But this was not the original question.) In that case, if you have a lot of GUIs, I would suggest pulling that out into its own function.
As for the second case, if the characters/objects may move as well, and the GUIs need to be repositioned relative to them, then sure, you can't get away from the need to rerun the positioning logic. (But this was not the original question.) In that case, if you have a lot of GUIs, I would suggest pulling that out into its own function.