I'm afraid you need more than one word to explain the answer to me.
Mutineer has the basic idea correct.
Details:
A close reading of my first post would catch that the function involved in trading is a team function (CvTeamAI) rather than a player function (CvPlayerAI). Therefore, the attitude referenced in redding out the techs is not your trading partner's attitude toward you (which is what is displayed on the trade screen), but instead your trading partner's team's attitude toward your team.
For these purposes, her team is her and all of her permanent allies. Your team is you, your permanent allies, and your vassals.
Furthermore, the value that is used is the average attitude of these relationships. Note that attitude means Friendly, Pleased, etc.
not +10 or +20 or whatever the net of the plusses and minuses is.
And as usual, the averaging is done with integer division, which rounds down on any excuse to do so. Thus, for her team to have a friendly attitude toward yours, it is necessary that every permanent ally on that team have a friendly attitude toward all of your allies and your vassals.
From what I can tell, the attitude of her vassals doesn't come into play at all. I didn't have enough time this morning to establish whether her attitude toward your ally's vassal matters at all.
When I've had a chance to satisfy myself that I have the details of this undertood, I'll update the first post so that the close reading I mentioned earlier is no longer essential.
Edit: to clarify, vassals aren't essential. You could run into the same problem with no vassals if the ally of your trade partner didn't share her high opinion of you.