No specific ideas on your bug but I wanted to mention that Solution Grove has been working on a package "dotlrn-eccomerce" that is designed to allow users to "buy" classes. It includes paying by credit card or with PO number. Features include:
Class size limits
Allow one person to register others (i.e. parent registering children)
Browse classes by calendar or category
We just launched Mass General Hospital and are launching Museum of Science Boston next Monday.
I don't know if it matches your use cases or if it would be overkill but its new code so I thought I'd let you know it exists. It is in CVS.