Cross-posted on CodeGuru forums.