--- ros/src/Extrema/Extrema_ExtPS.cxx	2007-08-28 13:06:46.000000000 -0500
+++ /home/jhu/occ6.3/OpenCASCADE6.3.0/ros/src/Extrema/Extrema_ExtPS.cxx	2008-10-09 14:13:13.000000000 -0500
@@ -88,10 +88,18 @@
   Standard_Real U, V;
   PS.Parameter(U, V);
   if (myS->IsUPeriodic()) {
-    U = ElCLib::InPeriod(U, myuinf, myuinf+myS->UPeriod());
+    Standard_Real Uupper = myuinf+myS->UPeriod();
+    if(U>(myuinf-mytolu) && U < myuinf) U = myuinf;
+    else if(U < (Uupper+mytolu) && U > Uupper) U = Uupper;
+    else
+      U = ElCLib::InPeriod(U, myuinf, myuinf+myS->UPeriod());
   }
   if (myS->IsVPeriodic()) {
-    V = ElCLib::InPeriod(V, myvinf, myvinf+myS->VPeriod());
+    Standard_Real Vupper = myvinf+myS->VPeriod();
+    if(V>(myvinf-mytolv) && V < myvinf) V = myvinf;
+    else if(V < (Vupper+mytolv) && V > Vupper) V = Vupper;
+    else
+      V = ElCLib::InPeriod(V, myvinf, myvinf+myS->VPeriod());
   }
   if ((myuinf-U) <= mytolu && (U-myusup) <= mytolu &&
       (myvinf-V) <= mytolv && (V-myvsup) <= mytolv) {

