diff --git a/libs/functional/negators.html b/libs/functional/negators.html
new file mode 100644
index 0000000..9d31750
--- /dev/null
+++ b/libs/functional/negators.html
@@ -0,0 +1,158 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+
+<html>
+<head>
+  <meta http-equiv="Content-Language" content="en-us">
+  <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
+
+  <title>Boost Function Object Adapter Library</title>
+</head>
+
+<body bgcolor="#FFFFFF" text="#000000">
+  <table border="1" bgcolor="#007F7F" cellpadding="2" summary="">
+    <tr>
+      <td bgcolor="#FFFFFF"><img src="../../boost.png" alt=
+      "boost.png (6897 bytes)" width="277" height="86"></td>
+
+      <td><a href="../../index.htm"><font face="Arial" color=
+      "#FFFFFF"><big>Home</big></font></a></td>
+
+      <td><a href="../libraries.htm"><font face="Arial" color=
+      "#FFFFFF"><big>Libraries</big></font></a></td>
+
+      <td><a href="http://www.boost.org/people/people.htm"><font face="Arial" color=
+      "#FFFFFF"><big>People</big></font></a></td>
+
+      <td><a href="http://www.boost.org/more/faq.htm"><font face="Arial" color=
+      "#FFFFFF"><big>FAQ</big></font></a></td>
+
+      <td><a href="../../more/index.htm"><font face="Arial" color=
+      "#FFFFFF"><big>More</big></font></a></td>
+    </tr>
+  </table>
+
+  <h1>Negators</h1>
+
+  <p>The header <a href="../../boost/functional.hpp">functional.hpp</a>
+  provides enhanced versions of both the negator adapters from the C++
+  Standard Library (&sect;20.3.5):</p>
+
+  <ul>
+    <li><tt>unary_negate</tt></li>
+
+    <li><tt>binary_negate</tt></li>
+  </ul>
+
+  <p>As well as the corresponding helper functions</p>
+
+  <ul>
+    <li><tt>not1</tt></li>
+
+    <li><tt>not2</tt></li>
+  </ul>
+
+  <p>However, the negators in this library improve on the standard versions
+  in two ways:</p>
+
+  <ul>
+    <li>They use <a href="function_traits.html">function object traits</a> to
+    avoid the need for <tt>ptr_fun</tt> when negating a function rather than
+    an adaptable function object.</li>
+
+    <li>They use Boost <a href=
+    "../utility/call_traits.htm">call&nbsp;traits</a> to determine the best
+    way to declare their arguments and pass them through to the adapted
+    function (see <a href="#arguments">below</a>).</li>
+  </ul>
+
+  <h3>Usage</h3>
+
+  <p>Usage is identical to the standard negators. For example,</p>
+
+  <blockquote>
+    <pre>
+bool bad(const Foo &amp;foo) { ... }
+...
+std::vector&lt;Foo&gt; c;
+...
+std::find_if(c.begin(), c.end(), boost::not1(bad));
+</pre>
+  </blockquote>
+
+  <h3 id="arguments">Argument Types</h3>
+
+  <p>The C++ Standard (&sect;20.3.5) defines unary negate like this (binary
+  negate is similar):</p>
+
+  <blockquote>
+    <pre>
+template &lt;class Predicate&gt;
+  class unary_negate
+    : public unary_function&lt;typename Predicate::argument_type,bool&gt; {
+public:
+  explicit unary_negate(const Predicate&amp; pred);
+  bool operator()(<strong>const typename Predicate::argument_type&amp;</strong> x) const;
+};
+</pre>
+  </blockquote>
+
+  <p>Note that if the Predicate's <tt>argument_type</tt> is a reference, the
+  type of <tt>operator()</tt>'s argument would be a reference to a reference.
+  Currently this is illegal in C++ (but see the <a href=
+  "http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/cwg_active.html#106">C++
+  standard core language active issues list</a>).</p>
+
+  <p>However, if we instead defined <tt>operator()</tt> to accept Predicate's
+  argument_type unmodified, this would be needlessly inefficient if it were a
+  value type; the argument would be copied twice - once when calling
+  <tt>unary_negate</tt>'s <tt>operator()</tt>, and again when
+  <tt>operator()</tt> called the adapted function.</p>
+
+  <p>So how we want to declare the argument for <tt>operator()</tt> depends
+  on whether or not the Predicate's <tt>argument_type</tt> is a reference. If
+  it is a reference, we want to declare it simply as <tt>argument_type</tt>;
+  if it is a value we want to declare it as
+  <tt>const&nbsp;argument_type&amp;</tt>.</p>
+
+  <p>The Boost <a href="../utility/call_traits.htm">call_traits</a> class
+  template contains a <tt>param_type</tt> typedef, which uses partial
+  specialisation to make precisely this decision. If we were to declare
+  <tt>operator()</tt> as</p>
+
+  <blockquote>
+    <pre>
+bool operator()(typename call_traits&lt;typename Predicate::argument_type&gt;::param_type x) const
+</pre>
+  </blockquote>
+
+  <p>the desired result would be achieved - we would eliminate references to
+  references without loss of efficiency. In fact, the actual declaration is
+  slightly more complicated because of the use of function object traits, but
+  the effect remains the same.</p>
+
+  <h3>Limitations</h3>
+
+  <p>Both the function object traits and call traits used to realise these
+  improvements rely on partial specialisation, these improvements are only
+  available on compilers that support that feature. With other compilers, the
+  negators in this library behave very much like those in the Standard -
+  <tt>ptr_fun</tt> will be required to adapt functions, and references to
+  references will not be avoided.</p>
+  <hr>
+
+  <p><a href="http://validator.w3.org/check?uri=referer"><img border="0" src=
+  "../../doc/images/valid-html401.png" alt="Valid HTML 4.01 Transitional"
+  height="31" width="88"></a></p>
+
+  <p>Revised 
+  <!--webbot bot="Timestamp" s-type="EDITED" s-format="%d %B, %Y" startspan -->02
+  December, 2006<!--webbot bot="Timestamp" endspan i-checksum="38510" --></p>
+
+  <p><i>Copyright &copy; 2000 Cadenza New Zealand Ltd.</i></p>
+
+  <p><i>Distributed under the Boost Software License, Version 1.0. (See
+  accompanying file <a href="../../LICENSE_1_0.txt">LICENSE_1_0.txt</a> or
+  copy at <a href=
+  "http://www.boost.org/LICENSE_1_0.txt">http://www.boost.org/LICENSE_1_0.txt</a>)</i></p>
+</body>
+</html>
