index_w  = iiM1;
     
     for (jj = 0 ; jj < MinM1 ; jj++) {
-      RArray[index_v] = HomogeneousArray[index_v1]; index_v++; index_v1++;
-      RArray[index_v] = HomogeneousArray[index_v1]; index_v++; index_v1++;
-      RArray[index_v] = HomogeneousArray[index_v1]; index_v++; index_v1++;
-      StoreW[index_w] = HomogeneousArray[index_v1]; index_w++; index_v1++;
+      RArray[index_v++] = HomogeneousArray[index_v1++];
+      RArray[index_v++] = HomogeneousArray[index_v1++];
+      RArray[index_v++] = HomogeneousArray[index_v1++];
+      StoreW[index_w++] = HomogeneousArray[index_v1++];
     }
 
     for (jj = MinM1 ; jj < M1 ; jj++) {
-      RArray[index_v] = 0.0e0                     ; index_v++; index_v1++;
-      RArray[index_v] = 0.0e0                     ; index_v++; index_v1++;
-      RArray[index_v] = 0.0e0                     ; index_v++; index_v1++;
-      StoreW[index_w] = HomogeneousArray[index_v1]; index_w++; index_v1++;
+      RArray[index_v++] = 0.;
+      RArray[index_v++] = 0.;
+      RArray[index_v++] = 0.;
+      StoreW[index_w++] = 0.;
     }
     index_u1 += M4;
     index_u  += M3;
   for (ii = MinN1 ; ii < N1 ; ii++) {
     
     for (jj = 0 ; jj < M1 ; jj++) {  
-      RArray[index_v] = 0.0e0; index_v++;
-      RArray[index_v] = 0.0e0; index_v++;
-      RArray[index_v] = 0.0e0; index_v++;
-      StoreW[index_w] = 0.0e0; index_w++;
+      RArray[index_v++] = 0.0e0;
+      RArray[index_v++] = 0.0e0;
+      RArray[index_v++] = 0.0e0;
+      StoreW[index_w++] = 0.0e0;
     }
   } 
 
 
 
   Resource_LexicalCompare Comp;
   Standard_Integer NbKey = myUserMap.Extent();
-  TColStd_Array1OfAsciiString KeyArray(1,NbKey);
+  TColStd_Array1OfAsciiString KeyArray(1,NbKey+1); // 1 more item is added to allow saving empty resource
   Resource_DataMapIteratorOfDataMapOfAsciiStringAsciiString Iter(myUserMap);
 
   for ( Index = 1; Iter.More(); Iter.Next())