Magic and Colby,
Sorry for the late reply. We figured it out last week thanks to both your recommendations, and then I got sick over the weekend till now, and finally feel up to writing you both a thoughtful reply. We likely still have settings that are not ideal, but it's giving us the output we were expecting (at least, with what we've encountered so far). I want this thread to be a source of info for future users.
When we turned on mrp, we had work orders that were back-scheduling a few months. We researched and found that we should set capacity to zero. Then work orders only back-scheduled the sum of the lead time in the default settings (three days). While researching that, we came across a recommendation to set the Fulfill Minimum for purchase orders to Today+Procurement time. The author said he didn't use it for work orders, but didn't say why.
We changed it for purchase orders, and that solved some problems. Then we decided to do the same for work orders. That caused a problem that we didn't understand at first. That caused mrp to create work orders that pegged to safety stock in the near future, and future work orders to peg to orders due this month. We switched work orders back to Fulfill Minimum = Today, and then mrp assigned the first released work orders to the first demand, and it worked the way we expected. Always fulfilling the customer need first, and safety stock last.
If your business process is to always ship from safety stock, then I guess today+procurement time would work for you. But we want to ship our orders first, even if we have to deplete safety stock to zero.
We were also generating extra orders because our coverage period was too large. The parts already had the correct lead time, and almost all have a safety stock and an order minimum on them, so we didn't need to order per a large period. We set the coverage period in the coverage group to 7, and everything aligned. We did find that this generated many small orders, but that was solved by just raising the minimum order (to essentially what the period requirement was in our old system).
We did truncate (not delete; truncate is faster, just 1-2 seconds) the reqtrans table, but that didn't solve our problem. The Fulfill Minimum = Today solved it. (Our specific problem for that involved a planned work order.)
The one thing we're still not sure about is the dynamic negative days settings. Everything we read said turn that on, and that was on from day 1. If we do that, do we still need negative days on the individual coverage groups? Is dynamic negative days an override, or a supplement, to the coverage group negative days? We turned off dynamic negative days, and set coverage group negative days to 950. We don't see a problem (yet).
Most of our parts are custom, and we write POs with scheduled deliveries that sometimes go out 13-18 months. We have had one part with a 2-year lead time. We do want mrp to see these POs, and tell us to accelerate delivery rather than place a new PO. Hence our coverage period and negative/positive days go out this far. We run mrp at night, so any extra computer time is a non-issue right now.
I want to thank both of you for your help. It helped us in the debugging. Given that we have 3,000 active parts, I won't be surprised if the buyers encounter a part that doesn't behave as expected, but I think we can adjust the appropriate settings at this point.