Index: trunk/psLib/src/mathtypes/psVector.c
===================================================================
--- trunk/psLib/src/mathtypes/psVector.c	(revision 24512)
+++ trunk/psLib/src/mathtypes/psVector.c	(revision 24563)
@@ -77,4 +77,5 @@
     // Create vector data array
     vector->data.U8 = psAlloc(nalloc * elementSize);
+    memset (vector->data.U8, 0, nalloc * elementSize);
 
     return vector;
@@ -119,13 +120,27 @@
                 _("psVectorRealloc must a given a non-NULL psVector to resize.  Desired datatype unknown."));
         return NULL;
-    } else if (vector->nalloc != nalloc) {     // No need to realloc to same size
-        elemType = vector->type.type;
-        elementSize = PSELEMTYPE_SIZEOF(elemType);
-        if (nalloc < vector->n) {
-            vector->n = nalloc;
-        }
-        // Realloc after decrementation to avoid accessing freed array elements
-        vector->data.U8 = psRealloc(vector->data.U8, nalloc * elementSize);
-        P_PSVECTOR_SET_NALLOC(vector,nalloc);
+    } 
+
+    
+    if (vector->nalloc == nalloc) {     
+	// No need to realloc to same size
+	return vector;
+    }
+     
+    elemType = vector->type.type;
+    elementSize = PSELEMTYPE_SIZEOF(elemType);
+
+    long nstart = vector->n;
+    if (nalloc < vector->n) {
+	vector->n = nalloc;
+    }
+    // Realloc after decrementation to avoid accessing freed array elements
+    vector->data.U8 = psRealloc(vector->data.U8, nalloc * elementSize);
+    P_PSVECTOR_SET_NALLOC(vector,nalloc);
+
+    // fill newly allocated range with zeros:
+    if (nstart < nalloc) {
+	long nNew = nalloc - nstart;
+	memset (&vector->data.U8[nstart*elementSize], 0, nNew*elementSize);
     }
 
@@ -165,4 +180,8 @@
     vector->type.type = type;
     vector->n = nalloc;
+
+    // zero the vector
+    memset (vector->data.U8, 0, byteSize);
+
     return vector;
 }
