(>= (match-end 0) (point)) だね。
bound も la-regexp にしたがって調整して
(when (and bound
(save-excursion
(let ((p (point)))
(goto-char bound)
(or (looking-at la-regexp)
(re-search-backward la-regexp p t)))))
(setq bound (max bound (match-end 0))))
こんな感じか。
count を指定した時の挙動が変だから最後は
(re-search-forward regexp bound noerror)