are you sure that you put the code in the right spot? (both float order patched!)
I hadn't thought the location mattered until just now! But I'm not sure where the ideal spot is. Oh, do you mean that I should patch page-flt.tex itself (and rebuild the formats, of course)? It has one \redofloatorder. Instead I had just been inserting your magic in the example source file itself, like so: % first a new key \startconstants dutch english german czech italian romanian french fallback: terugval fallback fallback fallback fallback fallback fallback \stopconstants % use that key \unprotect \long\def\dofloat#1#2#3#4% {\dosetfloatbox{#1}{#2}{#3}{#4}% \doifelsevaluenothing{\??fl#4\c!criterium} {\dogetfloatbox{#1}\empty} {\ifdim\wd\floatbox>\getvalue{\??fl#4\c!criterium}\relax \postcenterfloatbox{\wd\floatbox}% else we get left aligned %dogetfloatbox{#1}\v!here % see details/pascal \dogetfloatbox{#1}{\executeifdefined{\??fl#4\c!fallback}\v!here}% PATCHED \else \dogetfloatbox{#1}\empty \fi}} % pass the new location (will be done differently, hack \def\dogetfloatbox#1#2% {\ifvisible \doifelsenothing{#2} {\getfromcommalist[#1][1]% \@EA\beforesplitstring\commalistelement\at:\to\floatmethod \@EA\aftersplitstring \commalistelement\at:\to\floatcolumn \@EA\aftersplitstring \floatcolumn\at*\to\floatrow \@EA\beforesplitstring\floatcolumn\at*\to\floatcolumn % todo: nog algemeen otr \ifx\OTRSETsetpreferedcolumnslot\undefined\else \OTRSETsetpreferedcolumnslot\floatcolumn\floatrow \fi} {\let\floatcolumn\empty \let\floatrow\empty \edef\floatmethod{#2}}% \doifundefined{\string\floatmethod\floatmethod} {\let\floatmethod\v!here}% \getvalue{\string\floatmethod\floatmethod}[\floatmethod,#1]% PATCHED \fi} \def\dofloatreference {\doifnot\@@bknumbering\v!text {\doglobal\increment\numberedfloat \doifelse\@@bknumbering\v!text % alternative to yes|page {\let\next\immediatewriteutilitycommand} {\let\next\writeutilitycommand}% \expanded{\next {\noexpand\twopassentry {\s!float}% {\numberedfloat}% {\composedsectionnumber}}}}} \def\redofloatorder#1% {\doifnotinset\@@bknumbering{\v!nocheck,\v!text} {\doglobal\increment\nofplacedfloats\relax \gettwopassdata\s!float \iftwopassdatafound \doifnot\composedsectionnumber\twopassdata {\edef\oldcomposedsectionnumber{\composedsectionnumber}% \xdef\composedsectionnumber{\twopassdata}% \showmessage\m!floatblocks1{\nofplacedfloats,#1 \oldcomposedsectionnumber,\composedsectionnumber}}% \fi}} \protect \setupfloats[numbering=text] % we use the marginwidth as criterium \setupfloat[figure][criterium=\marginwidth,fallback=bottom] \starttext \placefigure[bottom]{1}{} \input tufte \placefigure[left]{2}{} \input tufte \placefigure[left]{3}{\framed[width=.9\marginwidth]{}} \input tufte \stoptext