diff --git a/R/PSO_v2012.R b/R/PSO_v2012.R
index b028ac73daacb5ed55ccfa91a520e21e1015c5ec..3db07308a86d41a4e0e60e09c5ffb0f90791c9a9 100755
--- a/R/PSO_v2012.R
+++ b/R/PSO_v2012.R
@@ -10,6 +10,7 @@
 ################################################################################
 # Created: 2008                                                               ##
 # Updates: 23-Nov-2010                                                        ##
+#          20-Sep-2012                                                        ##
 ################################################################################
 # Purpose  : To create a matrix randomly generated, with a bounded uniform distribution
 
@@ -26,11 +27,11 @@ Random.Bounded.Matrix <- function(npart, x.MinMax) {
   upper <- matrix( rep(x.MinMax[,2], npart), nrow=npart, byrow=TRUE)
 	
   # random initialization for all the particles, with a value in [0,1]
-  X <- matrix(runif(n*npart,0,1), nrow=npart, ncol=n)
+  X <- matrix(runif(n*npart, min=0, max=1), nrow=npart, ncol=n)
 
   # Transforming X into the real range defined by the user
   X <- lower + (upper-lower)*X  
-  #X <- t( lower +  (upper - lower )*t(X) )
+  #X <- t( lower +  (upper - lower )*t(X) ) # when using vector instead of matrixes
 	
   return(X)
 	
@@ -943,7 +944,12 @@ InitializateV <- function(npart, param.IDs, x.MinMax, v.ini.type, Xini) {
     if ( v.ini.type=="random2011" ) {
       V <- matrix(runif(n*npart, min=as.vector(lower-Xini), max=as.vector(upper-Xini)), nrow=npart)
     } else if ( v.ini.type=="lhs2011" ) {
-        V <- rLHS(npart, x.MinMax - cbind(x.MinMax[,1]-Xini, x.MinMax[,2]-Xini) )
+        # LHS initialization for all the particles, with a value in [0,1]
+        require(lhs)
+        V <- randomLHS(npart, n) 
+
+        # Transforming V into the real range defined by SPSO-2011
+        V <- lower + (upper-lower)*V  
       } # ELSE end 
   } else if ( v.ini.type=="random2007" ) {
         V <- ( Random.Bounded.Matrix(npart, x.MinMax) - Xini ) / 2