diff -dPNur php-5.2.6/ext/pdo_odbc/odbc_stmt.c php-5.2.6-ds/ext/pdo_odbc/odbc_stmt.c
--- php-5.2.6/ext/pdo_odbc/odbc_stmt.c	2007-12-31 08:20:10.000000000 +0100
+++ php-5.2.6-ds/ext/pdo_odbc/odbc_stmt.c	2008-06-09 13:33:13.000000000 +0200
@@ -407,9 +431,16 @@
 			return 0;
 		}
 	}
+	
+	
+	if (displaysize < 0) {
+	    col->maxlen = S->cols[colno].datalen = 0;
+	    colsize = 256;
+	} else {
 	colsize = displaysize;
 
 	col->maxlen = S->cols[colno].datalen = colsize;
+	}
 	col->namelen = colnamelen;
 	col->name = estrdup(S->cols[colno].colname);
 
@@ -485,14 +526,16 @@
 					if (rc != SQL_SUCCESS_WITH_INFO) {
 						break;
 					}
-				}
-
-				if (C->fetched_len == SQL_NO_TOTAL) {
-					used += alloced - used;
-				} else {
+					
+					used = alloced - 1;
+				} else {
+				    if (C->fetched_len == SQL_NO_TOTAL) {
+					used = alloced - 1;
+				    } else {
 					used += C->fetched_len;
-				}
-
+				    }
+				}
+
 				if (rc == SQL_SUCCESS) {
 					/* this was the final fetch */
 					break;
