diff --git a/DESCRIPTION b/DESCRIPTION
index ee24579cff5d968769f6c9c928f8b5e6ae52561e..5fbd53cf83ba527541dcfa9e008f849722df36b0 100755
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,8 +1,8 @@
 Package: hydroPSO
 Type: Package
 Title: Model-Independent Particle Swarm Optimisation for Environmental Models
-Version: 0.1-58-6
-Date: 2012-09-24
+Version: 0.1-58-7
+Date: 2012-09-25
 Author: Mauricio Zambrano-Bigiarini [aut, cre] and Rodrigo Rojas [ctb]
 Authors@R: c(person("Mauricio", "Zambrano-Bigiarini", email="mzb.devel@gmail.com", role=c("aut","cre")), person("Rodrigo", "Rojas", email="Rodrigo.RojasMujica@gmail.com", role=c("ctb")) )
 Maintainer: Mauricio Zambrano-Bigiarini <mzb.devel@gmail.com>
diff --git a/NAMESPACE b/NAMESPACE
index af189c853088481a6b4849929c48cde8771ded75..9235cfee0dc7061b25887ded0da09a638bc8a919 100755
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -54,7 +54,8 @@ export(hydroPSO,
        srastrigin,
        sgriewank,
        #schafferF6,
-       sackley
+       sackley,
+       sschwefel
       )
       
 S3method(params2ecdf, matrix)
diff --git a/NEWS b/NEWS
index 268a8ea8556bc6a8a25d090e77e6dd3957a3f27b..315b90ae5d856a2bc6b45d534be30a7dee84526c 100755
--- a/NEWS
+++ b/NEWS
@@ -54,9 +54,13 @@ NEWS/ChangeLog for hydroPSO
 
                             -) boundary.wall: 'reflecting' in  hydroPSO ver <= 0.1-58 is not longer equivalent to 'reflecting' in  hydroPSO ver >= 0.1-58
 
-        o 'test_functions': -) new benchmark functions: shifted sphere ('ssphere'), shifted Rosenbrock ('srosenbrock'), shifted Rastrigin ('srastrigin'), 
-                               shifted Griewank ('sgriewank') and shifted Ackley ('sackley') 
-       
+        o 'test_functions': -) new benchmark functions: 
+                               'ssphere'    : shifted Sphere (CEC 2005), 
+                               'srosenbrock': shifted Rosenbrock (CEC 2005), 
+                               'srastrigin' : shifted Rastrigin (CEC 2005),  
+                               'sgriewank'  : shifted Griewank (CEC 2005),  
+                               'sackley'    : shifted Ackley (CEC 2005),   
+                               'sschwefel'  : shifted Schwefel's Problem 1.2 (CEC 2005)       
         
 0.1-58	14-Sep-2012
         o 'hydroPSO'      : -) 'random.update' is now ONLY used when 'best.update="async". In hydroPSO 0.1-57 'random.update' was set to TRUE 
diff --git a/R/test_functions.R b/R/test_functions.R
index b2adee70344e1156017de1423d058e2bbeb82b16..1fda72d39f0a60066555d5758d3016ae6f613a8a 100755
--- a/R/test_functions.R
+++ b/R/test_functions.R
@@ -5,7 +5,7 @@
 # All these function were started on 2008, with updates on:                    #
 # 13-Dec-2010 ; 20-Dec-2010; 21-Dec-2010                                       #
 # 24-Jan-2011 ; 02-Feb-2011                                                    #
-# 14-Nov-2011
+# 14-Nov-2011 ; 21-Sep-2012 ; 25-Sep-2012
 
 # MZB, 21-Jun-2011
 # 3D sinc function: f(1,..,1)=1. Maximization
@@ -71,8 +71,9 @@ ackley <- function(x) {
 ########################### Shifted Functions ##################################
 ################################################################################
 
-# MZB, 21-Sep-2012. Unimodal Function
-# Shifted Sphere: f(o,..,o)=-450. Minimization. In [-100, 100]^n. AcceptableError < 0.01
+# MZB, 21-Sep-2012. Shifted Sphere (CEC 2005): f(o,..,o)=-450. 
+# Minimization. In [-100, 100]^n. AcceptableError < 0.01.
+# Properties: Unimodal, Shifted, Separable, Scalable 
 ssphere <- function (x, o=-100+200*runif(length(x)), fbias=-450) {
  n <- length(x)
  if (n != length(o)) stop("length(x) != length(o)")
@@ -80,7 +81,7 @@ ssphere <- function (x, o=-100+200*runif(length(x)), fbias=-450) {
  return(sum(z^2) + fbias)
 } # 'ssphere'
 
-# MZB, RR, 21-Jun-2011
+# MZB, RR, 21-Jun-2011. Properties: Unimodal, Shifted, Separable, Scalable
 # Shifted Griewank : f(o,..,o)=-180. Minimization. In [-600, 600]^n. AcceptableError < 0.05
 sgriewank <- function (x, o=-600+1200*runif(length(x)), fbias=-180) {
   n <- length(x)
@@ -90,8 +91,10 @@ sgriewank <- function (x, o=-600+1200*runif(length(x)), fbias=-180) {
 } # 'sgriewank'
 
 
-# MZB, 21-Sep-2012. Multimodal Basic Function
-# Shifted Rosenbrock : f(o,..,o)=390. Minimization. In [-100, 100]^n. AcceptableError < 100
+# MZB, 21-Sep-2012. # Shifted Rosenbrock (CEC 2005): f(o,..,o)=390. 
+# Minimization. In [-100, 100]^n. AcceptableError < 100
+# Properties: Multi-modal, Shifted, Non-separable, Scalable, Having a very narrow 
+#             valley from local optimum to  global optimum
 srosenbrock <- function(x, o=-100+200*runif(length(x)), fbias=390) {  
   n <- length(x)
   if (n != length(o)) stop("length(x) != length(o)")
@@ -100,8 +103,8 @@ srosenbrock <- function(x, o=-100+200*runif(length(x)), fbias=390) {
 } # 'srosenbrock' END
 
 
-# MZB, 21-Sep-2012
-# Shifted Ackley: f(o,..,o)=-140. Minimization. In [-32.768, 32.768]^n. AcceptableError < 0.01, a=20 ; b=0.2 ; c=2*pi
+# MZB, 21-Sep-2012. Shifted Ackley: f(o,..,o)=-140. 
+# Minimization. In [-32.768, 32.768]^n. AcceptableError < 0.01, a=20 ; b=0.2 ; c=2*pi
 sackley <- function (x, o=-32+64*runif(length(x)), fbias=-140) {
   n <- length(x)
   if (n != length(o)) stop("length(x) != length(o)")
@@ -110,8 +113,9 @@ sackley <- function (x, o=-32+64*runif(length(x)), fbias=-140) {
 } # 'sackley'
 
 
-# MZB, 21-Sep-2012
-# Shifted Rastrigin: f(o,..,o)=-330. Minimization. In [-5.12, 5.12]^n. AcceptableError < 100
+# MZB, 21-Sep-2012. Shifted Rastrigin (CEC 2005): f(o,..,o)=-330. 
+# Minimization. In [-5.12, 5.12]^n. AcceptableError < 100
+# Properties: Multi-modal, Shifted, Separable, Scalable, Huge number of local optima
 srastrigin <- function(x, o=-5+10*runif(length(x)), fbias=-330) { 
   n <- length(x) 
   if (n != length(o)) stop("length(x) != length(o)")
@@ -120,12 +124,25 @@ srastrigin <- function(x, o=-5+10*runif(length(x)), fbias=-330) {
 } # 'srastrigin' END
 
 
-# MZB, 21-Sep-2012
-# Shifted Rotated Rastrigin: f(o,..,o)=-330. Minimization. In [-5.12, 5.12]^n. AcceptableError < 100
-srrastrigin <- function(x, o=-5+10*runif(length(x)), fbias=-330) { 
+# MZB, 25-Sep-2012. Shifted Schwefel's Problem 1.2 (CEC 2005): f(o,..,o)=-450. 
+# Minimization. In [-100, 100]^n. AcceptableError < 100
+# Properties: Unimodal, Shifted, Non-separable, Scalable
+sschwefel <- function(x, o=-100+200*runif(length(x)), fbias=-450) { 
   n <- length(x) 
   if (n != length(o)) stop("length(x) != length(o)")
   z <- x - o
-  return( 10*n + sum( z^2 - 10*cos(2*pi*z) ) + fbias )
+  return( sum( (cumsum(z))^2 ) + fbias )
 } # 'srastrigin' END
 
+
+#### TODO: find the definition of the rotation matrix M:
+## MZB, 21-Sep-2012. Shifted Rotated Rastrigin (CEC 2005): f(o,..,o)=-330. 
+## Minimization. In [-5.12, 5.12]^n. AcceptableError < 100
+## Properties: Multi-modal, Shifted, Rotated, Non-separable, Scalable, Huge number of local optima
+#srrastrigin <- function(x, o=-5+10*runif(length(x)), fbias=-330) { 
+#  n <- length(x) 
+#  if (n != length(o)) stop("length(x) != length(o)")
+#  z <- x - o
+#  return( 10*n + sum( z^2 - 10*cos(2*pi*z) ) + fbias )
+#} # 'srrastrigin' END
+
diff --git a/man/test_functions.Rd b/man/test_functions.Rd
index cf8317e740699559a9000522fbccd8de6a852059..1e1125c2676e4fcdac7d921dc95ff04a1dfe0ea7 100755
--- a/man/test_functions.Rd
+++ b/man/test_functions.Rd
@@ -4,13 +4,19 @@
 %% Distributed under GPL 2 or later
 
 \name{test_functions}
-\alias{sphere}
 \alias{ackley}
 \alias{griewank}
 \alias{rastrigrin}
 \alias{rastrigin}
 \alias{rosenbrock}
 \alias{schafferF6}
+\alias{sphere}
+\alias{sackley}
+\alias{sgriewank}
+\alias{srastrigin}
+\alias{srosenbrock}
+\alias{sschwefel}
+\alias{ssphere}
 
 %- Also NEED an '\alias' for EACH other topic documented here.
 \title{
@@ -22,33 +28,52 @@ Test functions commonly used as benchmark for global optimisation problems
 \usage{
 ackley(x)
 griewank(x)
-sphere(x)
 rastrigrin(x)
 rosenbrock(x)
 schafferF6(x)
+sphere(x)
+sackley(x, o=-32+64*runif(length(x)), fbias=-140)
+sgriewank(x, o=-600+1200*runif(length(x)), fbias=-180)
+srastrigin(x, o=-5+10*runif(length(x)), fbias=-330)
+srosenbrock(x, o=-100+200*runif(length(x)), fbias=390)
+sschwefel(x, o=-100+200*runif(length(x)), fbias=-450)
+ssphere(x, o=-100+200*runif(length(x)), fbias=-450)
+
 }
 %- maybe also 'usage' for other objects documented here.
 \arguments{
   \item{x}{
 numeric vector to be evaluated
 }
+  \item{o}{
+numeric shifting vector to be used, with the same length of \code{x}
 }
-%%\details{
-%%  ~~ If necessary, more details than the description above ~~
-%%}
-%%\value{
-%%  ~Describe the value returned
+  \item{fbias}{
+numeric with the bias to be imposed
+}
+}
+%\details{
+%\code{Ackley}
+%}
+\value{
+Each test function returns a single numeric value corresponding to the function evaluated on the vector \code{x}
 %%  If it is a LIST, use
 %%  \item{comp1 }{Description of 'comp1'}
 %%  \item{comp2 }{Description of 'comp2'}
 %% ...
-%%}
+}
 \references{
-\cite{\url{http://www.zsd.ict.pwr.wroc.pl/files/docs/functions.pdf}}
 
+Test Functions for Unconstrained Global Optimization \cr
 \cite{\url{http://www-optima.amp.i.kyoto-u.ac.jp/member/student/hedar/Hedar_files/TestGO_files/Page364.htm}}
 
+GEATbx: Example Functions (single and multi-objective functions) \cr
 \cite{\url{http://www.geatbx.com/docu/fcnindex-01.html}}
+
+Problem Definitions and Evaluation Criteria for the CEC 2005 Special Session on Real-Parameter Optimization \cr
+\cite{\url{www.lri.fr/~hansen/Tech-Report-May-30-05.pdf}}
+
+\cite{\url{http://www.zsd.ict.pwr.wroc.pl/files/docs/functions.pdf}}
 }
 \author{
 Mauricio Zambrano-Bigiarini, \email{mzb.devel@gmail.com}
@@ -59,9 +84,9 @@ Mauricio Zambrano-Bigiarini, \email{mzb.devel@gmail.com}
 
 %% ~Make other sections like Warning with \section{Warning }{....} ~
 
-%%\seealso{
-%% ~~objects to See Also as \code{\link{help}}, ~~~
-%%}
+\seealso{
+\code{\link{hydroPSO}}
+}
 %%\examples{
 
 %%}