- if (iter_p_->report_to_l()->depth_i () > report_to_l ()->depth_i ()
- && ! dynamic_cast<Grace_iterator*> (iter_p_)) // UGH.!
- set_translator (iter_p_->report_to_l());
+ Translator_group * child_report = child_report = iter_p_->report_to_l ();
+ if (dynamic_cast<Grace_iterator*> (iter_p_))
+ child_report = child_report->daddy_trans_l_;
+
+ if (report_to_l()->depth_i () < child_report->depth_i ())
+ set_translator (child_report);