Index: /issm/trunk-jpl/src/c/classes/Elements/Element.cpp
===================================================================
--- /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 26134)
+++ /issm/trunk-jpl/src/c/classes/Elements/Element.cpp	(revision 26135)
@@ -2340,5 +2340,5 @@
 		}
 		else{
-			values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness)*(upperdepthmelt-base[i]);
+			values[i]=meltratefactor[i]*tanh((base[i]-bed[i])/thresholdthickness);//*(upperdepthmelt-base[i]);
 		}
 	}
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h	(revision 26134)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmDenseMat.h	(revision 26135)
@@ -230,8 +230,20 @@
 			switch(mode){
 				case ADD_VAL:
-					for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
+					for(i=0;i<m;i++){
+						if(idxm[i]<0) continue;
+						for(j=0;j<n;j++){
+							if(idxn[j]<0) continue;
+							this->matrix[N*idxm[i]+idxn[j]]+=values[n*i+j];
+						}
+					}
 					break;
 				case INS_VAL:
-					for(i=0;i<m;i++) for(j=0;j<n;j++) this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
+					for(i=0;i<m;i++){
+						if(idxm[i]<0) continue;
+						for(j=0;j<n;j++){
+							if(idxn[j]<0) continue;
+							this->matrix[N*idxm[i]+idxn[j]]=values[n*i+j];
+						}
+					}
 					break;
 				default:
Index: /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h
===================================================================
--- /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 26134)
+++ /issm/trunk-jpl/src/c/toolkits/issm/IssmSeqVec.h	(revision 26135)
@@ -101,8 +101,8 @@
 			switch(mode){
 				case ADD_VAL:
-					for(i=0;i<ssize;i++) this->vector[list[i]]+=values[i];
+					for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]+=values[i];
 					break;
 				case INS_VAL:
-					for(i=0;i<ssize;i++) this->vector[list[i]]=values[i];
+					for(i=0;i<ssize;i++) if(list[i]>=0) this->vector[list[i]]=values[i];
 					break;
 				default:
@@ -113,5 +113,7 @@
 		}
 		/*}}}*/
-		void SetValue(int dof, doubletype value, InsMode mode){/*{{{*/
+		void SetValue(int dof, doubletype value,InsMode mode){/*{{{*/
+
+			_assert_(dof>=0);
 
 			switch(mode){
