diff --git a/applets/usage.c b/applets/usage.c
index a919a58..bab6d21 100644
--- a/applets/usage.c
+++ b/applets/usage.c
@@ -161,7 +161,7 @@
 
 #if defined BB_DD
 const char dd_usage[] =
-	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
+	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N] [conv=notrunc|sync]\n"
 #ifndef BB_FEATURE_TRIVIAL_HELP
 	"\nCopy a file, converting and formatting according to options\n\n"
 	"\tif=FILE\tread from FILE instead of stdin\n"
@@ -171,6 +171,7 @@
 	"\tskip=N\tskip N input blocks\n"
 	"\tseek=N\tskip N output blocks\n"
 	"\tconv=notrunc\t dont truncate of at end of write\n"
+	"\tconv=sync\t pad the last block with zeros until blocksize\n"
 	"\n"
 	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
 #endif
diff --git a/coreutils/dd.c b/coreutils/dd.c
index 6868a91..2b77ea6 100644
--- a/coreutils/dd.c
+++ b/coreutils/dd.c
@@ -49,14 +49,15 @@
 	int inCc = 0;
 	int outCc;
 	int trunc=TRUE;
-	long blockSize = 512;
+	int sync=FALSE;
+	long blockSize = 512,ibs;
 	uintmax_t skipBlocks = 0;
 	uintmax_t seekBlocks = 0;
 	uintmax_t count = (uintmax_t) - 1;
 	uintmax_t inTotal = 0;
 	uintmax_t outTotal = 0;
 	uintmax_t totalSize;
-	uintmax_t readSize;
+
 	unsigned char buf[BUFSIZ];
 	char *keyword = NULL;
 
@@ -98,6 +99,8 @@
 			keyword = (strchr(*argv, '=') + 1);
                 	if (strcmp(keyword, "notrunc") == 0) 
 				trunc=FALSE;
+			if (strcmp(keyword, "sync") == 0) 
+				sync=TRUE;
 		} else {
 			goto usage;
 		}
@@ -137,13 +140,24 @@
 	lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
 	lseek(outFd, (off_t) (seekBlocks * blockSize), SEEK_SET);
 	totalSize=count*blockSize;
-	while ((readSize = totalSize - inTotal) > 0) {
-		if (readSize > BUFSIZ)
-			readSize=BUFSIZ;
-		inCc = fullRead(inFd, buf, readSize);
+
+	ibs=blockSize;
+	if (ibs > BUFSIZ)
+		ibs=BUFSIZ;
+			
+	while (totalSize > outTotal) {
+		inCc = fullRead(inFd, buf, ibs);
 		inTotal += inCc;
-		if ((outCc = fullWrite(outFd, buf, inCc)) < 1)
+		if ( (sync==TRUE) && (inCc>0) )
+			while (inCc<ibs)
+				buf[inCc++]='\0';
+
+		if ((outCc = fullWrite(outFd, buf, inCc)) < 1){
+			if (outCc < 0 ){
+				perror("Error during write");
+			}
 			break;
+		}
 		outTotal += outCc;
         }
 	if (trunc == TRUE) {
diff --git a/dd.c b/dd.c
index 6868a91..2b77ea6 100644
--- a/dd.c
+++ b/dd.c
@@ -49,14 +49,15 @@
 	int inCc = 0;
 	int outCc;
 	int trunc=TRUE;
-	long blockSize = 512;
+	int sync=FALSE;
+	long blockSize = 512,ibs;
 	uintmax_t skipBlocks = 0;
 	uintmax_t seekBlocks = 0;
 	uintmax_t count = (uintmax_t) - 1;
 	uintmax_t inTotal = 0;
 	uintmax_t outTotal = 0;
 	uintmax_t totalSize;
-	uintmax_t readSize;
+
 	unsigned char buf[BUFSIZ];
 	char *keyword = NULL;
 
@@ -98,6 +99,8 @@
 			keyword = (strchr(*argv, '=') + 1);
                 	if (strcmp(keyword, "notrunc") == 0) 
 				trunc=FALSE;
+			if (strcmp(keyword, "sync") == 0) 
+				sync=TRUE;
 		} else {
 			goto usage;
 		}
@@ -137,13 +140,24 @@
 	lseek(inFd, (off_t) (skipBlocks * blockSize), SEEK_SET);
 	lseek(outFd, (off_t) (seekBlocks * blockSize), SEEK_SET);
 	totalSize=count*blockSize;
-	while ((readSize = totalSize - inTotal) > 0) {
-		if (readSize > BUFSIZ)
-			readSize=BUFSIZ;
-		inCc = fullRead(inFd, buf, readSize);
+
+	ibs=blockSize;
+	if (ibs > BUFSIZ)
+		ibs=BUFSIZ;
+			
+	while (totalSize > outTotal) {
+		inCc = fullRead(inFd, buf, ibs);
 		inTotal += inCc;
-		if ((outCc = fullWrite(outFd, buf, inCc)) < 1)
+		if ( (sync==TRUE) && (inCc>0) )
+			while (inCc<ibs)
+				buf[inCc++]='\0';
+
+		if ((outCc = fullWrite(outFd, buf, inCc)) < 1){
+			if (outCc < 0 ){
+				perror("Error during write");
+			}
 			break;
+		}
 		outTotal += outCc;
         }
 	if (trunc == TRUE) {
diff --git a/usage.c b/usage.c
index a919a58..bab6d21 100644
--- a/usage.c
+++ b/usage.c
@@ -161,7 +161,7 @@
 
 #if defined BB_DD
 const char dd_usage[] =
-	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N]\n"
+	"dd [if=FILE] [of=FILE] [bs=N] [count=N] [skip=N] [seek=N] [conv=notrunc|sync]\n"
 #ifndef BB_FEATURE_TRIVIAL_HELP
 	"\nCopy a file, converting and formatting according to options\n\n"
 	"\tif=FILE\tread from FILE instead of stdin\n"
@@ -171,6 +171,7 @@
 	"\tskip=N\tskip N input blocks\n"
 	"\tseek=N\tskip N output blocks\n"
 	"\tconv=notrunc\t dont truncate of at end of write\n"
+	"\tconv=sync\t pad the last block with zeros until blocksize\n"
 	"\n"
 	"Numbers may be suffixed by w (x2), k (x1024), b (x512), or M (x1024^2)\n"
 #endif
