diff --git a/NEWS b/NEWS
index 35a9902..d901828 100644
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,13 @@
 0.8.9 (??/??/2014):
 -------------------
 
+- Added check for valid location of backup GPT data to GPT-destruction
+  options ('z' in gdisk, -z and -Z options to sgdisk). If the backup
+  GPT data structures aren't at the end of the disk, they aren't erased.
+  This is done to avoid wiping out data mid-disk that might not be backup
+  GPT data structures, which could otherwise occur if a RAID array was
+  resized in certain ways.
+
 - Added check for an oversized 0xEE protective partition. The program now
   auto-repairs this condition on loading if the GPT data seem otherwise
   valid. This is done because I've been receiving reports of some disks
diff --git a/gpt.cc b/gpt.cc
index fa7b661..d584397 100644
--- a/gpt.cc
+++ b/gpt.cc
@@ -1327,8 +1327,8 @@
       tableSize = numParts * mainHeader.sizeOfPartitionEntries;
       emptyTable = new uint8_t[tableSize];
       if (emptyTable == NULL) {
-         cerr << "Could not allocate memory in GPTData::DestroyGPT()! Terminating!\n";
-         exit(1);
+         cerr << "Could not allocate memory in GPTData::DestroyGPT()! Aborting operation!\n";
+         return(0);
       } // if
       memset(emptyTable, 0, tableSize);
       if (allOK) {
@@ -1337,25 +1337,31 @@
             cerr << "Warning! GPT main partition table not overwritten! Error is " << errno << "\n";
             allOK = 0;
          } // if write failed
-      } // if 
-      if (!myDisk.Seek(secondHeader.partitionEntriesLBA))
-         allOK = 0;
-      if (allOK) {
-         sum = myDisk.Write(emptyTable, tableSize);
-         if (sum != tableSize) {
-            cerr << "Warning! GPT backup partition table not overwritten! Error is "
-                 << errno << "\n";
-            allOK = 0;
-         } // if wrong size written
       } // if
-      if (!myDisk.Seek(secondHeader.currentLBA))
-         allOK = 0;
-      if (allOK) {
-         if (myDisk.Write(blankSector, 512) != 512) { // blank it out
-            cerr << "Warning! GPT backup header not overwritten! Error is " << errno << "\n";
+
+      if (secondHeader.currentLBA == (diskSize - UINT64_C(1))) {
+         if (!myDisk.Seek(secondHeader.partitionEntriesLBA))
             allOK = 0;
+         if (allOK) {
+            sum = myDisk.Write(emptyTable, tableSize);
+            if (sum != tableSize) {
+               cerr << "Warning! GPT backup partition table not overwritten! Error is "
+                    << errno << "\n";
+               allOK = 0;
+            } // if wrong size written
          } // if
-      } // if
+         if (!myDisk.Seek(secondHeader.currentLBA))
+            allOK = 0;
+         if (allOK) {
+            if (myDisk.Write(blankSector, 512) != 512) { // blank it out
+               cerr << "Warning! GPT backup header not overwritten! Error is " << errno << "\n";
+               allOK = 0;
+            } // if
+         } // if
+      } else {
+         cout << "Note: The GPT second header is not at the end of the disk end; therefore,\n"
+              << "it's not being erased.\n";
+      }
       myDisk.DiskSync();
       myDisk.Close();
       cout << "GPT data structures destroyed! You may now partition the disk using fdisk or\n"
diff --git a/parttypes.cc b/parttypes.cc
index 1c12b5e..e624e54 100644
--- a/parttypes.cc
+++ b/parttypes.cc
@@ -92,7 +92,8 @@
    AddType(0x2700, "DE94BBA4-06D1-4D40-A16A-BFD50179D6AC", "Windows RE");
 
    // Open Network Install Environment (ONIE) specific types.
-   // See http://www.onie.org/
+   // See http://www.onie.org/ and
+   // https://github.com/onie/onie/blob/master/rootconf/x86_64/sysroot-lib-onie/onie-blkdev-common
    AddType(0x3000, "7412F7D5-A156-4B13-81DC-867174929325", "ONIE boot");
    AddType(0x3001, "D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149", "ONIE config");
 
