How are offers matched up on Ripple trades?

I'm trying to better understand how buy and sell offers work on the Ripple network.

Let's say Alice creates a new Ripple currency, calls it XYZ, and describes it to her friends Bob and Carol.

Bob loves the new XYZ currency. He submits an offer to buy 1 XYZ for 3 XRP.

Carol merely likes XYZ. She offers to buy 1 XYZ for just 1 XRP.

That's the set up. I'm wondering what happens in the following cases...

What if Alice offers to sell 2 XYZ for 4 XRP? Will the ripple network transfer 1 XYZ each to Bob and Carol? Or, must Alice wait until someone offers to buy exactly the number of XYZ she is selling?

What if instead Alice offers to sell just 1 XYZ for 2 XRP? Only Bob's offer of 3 XRP meets the price. But will Bob spend just 2 XRP (what Alice asked) or 3 XRP (what he offered)?

Finally, what if Alice offers to sell just 1 XYZ for 1 XRP? Will she end up with 3 XRP from Bob, 1 XRP from Bob, or 1 XRP from Carol?

Offers are always filled best first. Among tying offers, the one placed first is taken first.

Once they're placed, offers are always taken at the rate they were placed. Offers are always placed at their original rate, regardless of what crossing offers they take.

When an offer is placed, any crossing offers (existing offers in the other direction that can satisfy all or part of the new offer) are taken. It is up to the person who placed the offer whether counter-offers that tie their rate are taken.

The difference between a "buy" offer and a "sell" offer is only how the offer is placed after crossing offers are taken. For example:

If there are no crossing offers, there is no difference between an offer to buy 1 XYZ for 1 XRP and an offer to sell 1 XRP for 1 XYZ. But ...

If you place an offer to buy 1 XYZ for 1 XRP and crossing offers allow you to buy .5 XYZ for .1 XRP, the remaining offer will be to buy .5 XYZ for .5 XRP. (So, when/if your offer is fully consumed, you will buy 1 XYZ for .6 XRP.)

If you place an offer to sell 1 XRP for 1 XYZ and crossing offers allow you to sell .1 XRP for .5 XYZ, the remaining offer will be to sell .9 XRP for .9 XYZ. (So when/if your offer is fully consumed, you will sell 1 XRP for 1.4 XYZ.)

• Wow. I'm sure the answer to my question is in there somewhere. I'm trying to grok. What exactly is a "crossing offer"? Is it one that's already in the ledger when my offer is placed? Commented Feb 9, 2014 at 20:15
• A "crossing offer" is an existing offer in the other direction that can satisfy all or part of the offer you are placing. Commented Feb 9, 2014 at 20:15
• Forgive my density. You said "...offers are always taken at the rate they were placed. Offers are always placed at their original rate, regardless of what crossing offers they take." Later, you describe a scenario in which a buy offer is consumed for a more advantageous rate, and then same for a sell offer. What am I missing here? Commented Feb 9, 2014 at 20:21
• In those cases, the offers aren't being taken, they're being placed. They are taking existing offers, which they take at the rate at which those offers were placed. "Once they're placed, offers are always taken at the rate they were placed. Commented Feb 9, 2014 at 20:29
• OK. I think I see the light. A crossing offer is chronologically first, right? So when I ask " will Bob spend just 2 XRP (what Alice asked) or 3 XRP (what he offered)?" It is the person who offers last who gets the most advantageous rate. Please correct me if I'm wrong. And thanks for the explanations. Commented Feb 9, 2014 at 20:30