Gerade ist mir noch eine andere, schnellere Variante eingefallen:
Der ausgewählte Rahmen wird bis zu der angegebenen Maximalhöhe ausgedehnt.
Dann wird geprüft, ob der Überfluß beseitigt ist.
Wenn ja, wird die Position der letzten Zeile ermittelt und die untere Rahmenkante dorthin verschoben.
Wenn nein, dann wird die alte Position wiederhergestellt und es erscheint eine Fehlermeldung.