--- indic-ot.c.bak	2006-08-14 09:38:32.000000000 +0800
+++ indic-ot.c	2006-08-14 16:04:00.000000000 +0800
@@ -421,6 +421,31 @@
 		writeChar(&output, chars[i], /*i*/ prev, nukt_p);
 	    }
 
+	    //for the special conjuction of Cons+0x0d4d+0x0d31 of Malayalam
+	    if ((baseConsonant - 2 >= 0) &&
+		(chars[baseConsonant - 1] == 0x0d4d) &&
+		(chars[baseConsonant] == 0x0d31) &&
+		((chars[baseConsonant - 2] >= 0x0d15) && 
+		 (chars[baseConsonant - 2] <= 0x0d39)))  {
+		if (output.fOutChars != NULL) {
+	            gunichar temp_char;
+	            guint32 temp_index;
+	            gulong temp_tag;
+
+	            temp_char = output.fOutChars[output.fOutIndex - 3];
+	            temp_index = output.fCharIndices[output.fOutIndex - 3];
+	            temp_tag = output.fCharTags[output.fOutIndex - 3];
+
+	            output.fOutChars[output.fOutIndex - 3] = output.fOutChars[output.fOutIndex - 1];
+	            output.fCharIndices[output.fOutIndex - 3] = output.fCharIndices[output.fOutIndex - 1];
+	            output.fCharTags[output.fOutIndex - 3] = pstf_p;	
+
+	            output.fOutChars[output.fOutIndex - 1] = temp_char;
+	            output.fCharIndices[output.fOutIndex - 1] = temp_index;
+	            output.fCharTags[output.fOutIndex - 1] = temp_tag;
+                }
+	    }
+
 	    if ((class_table->scriptFlags & SF_MATRAS_AFTER_BASE) != 0) {
 		writeMbelow(&output);
 		writeMabove(&output);
