static void iter_node_scion_rev(btIterator *iter) {
	bt    *btr     = iter->btr;
	fol_t *fl      = (fol_t *)iter->data;
	bt_n  *kid     = NODES(iter->btr, iter->bln->self)[iter->bln->in];
	bool   scioned = (fl->diff > kid->scion); //DEBUG_ITER_NODE_SCION_REV
	if (scioned) {
		fl->cnt  += kid->scion + 1; // +1 for NODE itself
		if (btr->dirty) fl->cnt += getDR(btr, iter->bln->self, iter->bln->ik);
		fl->diff  = fl->ofst - fl->cnt;
		if (fl->diff < 0) {
			fl->over = 0;
			return;
		}
		if (iter->bln->ik) iter->bln->ik--;
		if (iter->bln->in) iter->bln->in--;
		else               toparentrecurserev(iter);
		if (!fl->diff)    {
			fl->over = 0;
			return;
		}
	} else {
		fl->cnt++;
		if (btr->dirty) fl->cnt += getDR(btr, iter->bln->self, iter->bln->ik);
		fl->diff  = fl->ofst - fl->cnt;
		if (fl->diff < 0) {
			fl->over = 0;
			return;
		}
		GET_NEW_CHILD(iter)
		tochildrecurserev(iter,
						  NODES(iter->btr, iter->bln->self)[iter->bln->in]);
		if (!fl->diff)    {
			fl->over = 0;
			return;
		}
	} //printf("END iter_node_scion_rev: key: "); DUMP_CURR_KEY
}
static void iter_leaf_rev(btIterator *iter) { //printf("iter_leaf_rev\n");
	if (iter->bln->ik) iter->bln->ik--;
	else               toparentrecurserev(iter);
}