Several studies of two-party negotiations have shown that negotiators more often than not reach inefficient compromises. We analyze the circumstances under which rational agents make inefficient compromises and refrain from improving them. We do this by describing and interpreting various negotiation situations and by developing formal constructs and theorems for determining the character of a negotiation situation. Key among these concepts is the notion of opposition. Although opposition is defined in terms of the utility functions, it is more fundamental in the sense that it is more intuitive to decision makers and can be used in contexts in which the parties' utilities are unknown or are partially known. The effects of various rationality assumptions on efficiency and their implications for negotiation support systems are discussed. We argue that the prescriptive/descriptive approach advocated by negotiation analysts lacks sufficient explanatory powers to be effectively used in negotiation support and that negotiation support systems should not constrain the parties to the set of efficient points