Fix #801: Only evaluate values proc lazily.

This largely undoes #851 and fixes #801.