Locomotive BASIC 1.1 on the Amstrad CPC6128 had a fairly decent FILL command. It wasn't the fastest, but then what FILL routines in BASIC were back then? It would do a decent job of filling complex shapes though.
This was one of the differences between 1.1 and the BASIC 1.0 supplied with the CPC464.
The sources of early versions of curses are available in Diomidis Spinellis’ Unix history repo, for example the 4.4BSD version of libcurses. This includes reconstructed history, all the way back to this synthetic 4BSD-era commit.
The sources are available in a number of other places such as TUHS (which has a 2.9BSD version as well, along with the AT&T ...