Previous work by G. Zlotkin and J.S. Rosenschein (1989, 1990, 1991, 1992) discussed interagent negotiation protocols. One of the main assumptions there was that the agents' goals remain fixed - the agents cannot relax their initial goals, which can be achieved only as a whole and cannot be partially achieved. A goal there was considered a formula that is either satisfied or not satisfied by a given state. We here present a more general approach to the negotiation problem in non-cooperative domains where agents' goals are not expressed as formulas, but rather as worth functions. An agent associates a particular value with each possible final state; this value reflects the degree of satisfaction the agent derives from being in that state. With this new definition of goal as worth function, an agreement may lead to a situation in which one or both goals are only partially achieved (i.e., agents may not reach their most desired state). We present a negotiation protocol that can be used in a general non-cooperative domain when worth functions are available. This multi-plan deal type allows agents to compromise over their degree of satisfaction, and (in parallel) to negotiate over the joint plan that will be implemented to reach the compromise final state. The ability to compromise often results in a better deal, enabling agents to increase their overall utility. Finally, we present more detailed examples of specific worth functions in various domains, and show how they are used in the negotiation process.