The problem is caused by TeX's asynchronous output routine. The count register isn't updated until the paragraph break occurs. The same problem occurs with the page count as illustrated here:
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum[1-6]
\lipsum*[7] Page: \thepage.
\end{document}
The standard way of getting around this is to use \label / \pageref like this:
\documentclass[a4paper]{article}
\usepackage{geometry}
\usepackage{lipsum}
\begin{document}
\lipsum[1-6]
\lipsum*[7] Page: \label{here}\pageref{here}.
\end{document}
Unfortunately this only works for counters that are incremented using \refstepcounter. The count register \c@thisframe isn't increment but is instead set to the next available frame that's valid for the given page. However, flowfram provides a command to label the current frame:
\newcommand*{\labelflowidn}[1]{%
{%
\def\@currentlabel{\thethisframe}%
\label{#1}%
}%
}
Unfortunately, unlike \c@page, \c@thisframe doesn't stabilise until after the \protected@write to the .aux file occurs.
One way to get around this is to patch \@setcol like this:
\makeatletter
\let\@org@setcol\@setcol
\def\dodeferredstuff{}
\renewcommand{\@setcol}[1]{\@org@setcol{#1}\dodeferredstuff}
\newcommand{\deferredlabelflowidn}[1]{%
\def\dodeferredstuff{\labelflowidn{#1}\let\dodeferredstuff\relax}%
}
\makeatother
And use \deferredlabelflowidx instead. Adjusted MWE:
\documentclass[a4paper]{article}
\usepackage{flowfram}
\makeatletter
\let\@org@setcol\@setcol
\def\dodeferredstuff{}
\renewcommand{\@setcol}[1]{\@org@setcol{#1}\dodeferredstuff}
\newcommand{\deferredlabelflowidn}[1]{%
\def\dodeferredstuff{\labelflowidn{#1}\let\dodeferredstuff\relax}%
}
\makeatother
\twocolumn
\begin{document}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa \textbf{The current frame id is:
\thethisframe} aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa \textbf{And
now the frame id is: \thethisframe} Label/ref:
\labelflowidn{here}\ref{here}.
Deferred: \deferredlabelflowidn{defhere}\ref{defhere}.
aaa \textbf{Here the frame id is: \thethisframe}
\end{document}

Unfortunately, this only works when used in the last paragraph of the frame. A better approach is to do the deferred command at the start of the next paragraph using \everypar:
\def\dodeferredstuff{}
\newcommand{\deferredlabelflowidn}[1]{%
\def\dodeferredstuff{\labelflowidn{#1}\let\dodeferredstuff\relax}%
}
\everypar{\dodeferredstuff}
To guard against section commands that reset \everypar:
\def\dodeferredstuff{}
\newcommand{\deferredlabelflowidn}[1]{%
\def\dodeferredstuff{\labelflowidn{#1}\let\dodeferredstuff\relax}%
\everypar{\dodeferredstuff}%
}
Here's the amended MWE:
\documentclass[a4paper]{article}
\usepackage{flowfram}
\def\dodeferredstuff{}
\newcommand{\deferredlabelflowidn}[1]{%
\def\dodeferredstuff{\labelflowidn{#1}\let\dodeferredstuff\relax}%
\everypar{\dodeferredstuff}%
}
\twocolumn
\begin{document}
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
Deferred: \deferredlabelflowidn{sample}\ref{sample}.
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa
aaa aaa aaa aaa aaa aaa aaa aaa \textbf{The current frame id is:
\thethisframe} aaa aaa aaa aaa aaa aaa aaa aaa aaa aaa \textbf{And
now the frame id is: \thethisframe} Label/ref:
\labelflowidn{here}\ref{here}.
Deferred: \deferredlabelflowidn{defhere}\ref{defhere}.
aaa \textbf{Here the frame id is: \thethisframe}
\end{document}

\thepagein a paragraph that spans a page break. – Nicola Talbot Jan 16 '17 at 14:34