I have now just checked manually whether the cursor is at the border of scrolloff, i.e. if it would be scrolled by <C-y> for example or not, and if not, then I move it manually at each iteration with j or k:
let scrollaction= "normal \<C-y>"
" now also check how far the cursor is ...
As of version 8.1.2231 Vim has the gM command which puts your cursor at the middle of a text line. If you supply a count the count is interpreted as the percentage of the line width, e.g., 33gm will put the cursor at roughly one third of the text width.
$ or <End> - goes to end of line
g_ - goes to last non blank of line
g$ or g<End> (both take a count) - goes to end of last screen n-1'th line
<Ctrl><End> (takes a count) - goes to end of absolute n'th line