diff --git a/src/qcbor_decode.c b/src/qcbor_decode.c
index 00b10cb..d9e6912 100644
--- a/src/qcbor_decode.c
+++ b/src/qcbor_decode.c
@@ -1094,7 +1094,7 @@
       goto Done;
    }
 
-   // Loop getting chunk of indefinite string
+   // Loop getting chunks of the indefinite length string
    UsefulBufC FullString = NULLUsefulBufC;
 
    for(;;) {
@@ -1610,12 +1610,10 @@
                            d - (double)pDecodedItem->val.epochDate.nSeconds;
       }
 #else
-         /* Disabling float support causes a floating-point
-          date to error in the default below. The above code
-          requires floating-point conversion to integers and
-          comparison which requires either floating-point HW
-          or a SW library. */
+
          uReturn = QCBOR_ERR_FLOAT_DATE_DISABLED;
+         goto Done;
+
 #endif /* QCBOR_DISABLE_FLOAT_HW_USE */
          break;
 
@@ -2331,7 +2329,8 @@
        */
       do {
          uReturn = QCBORDecode_GetNext(pMe, &Item);
-         if(uReturn != QCBOR_SUCCESS) {
+         if( QCBORDecode_IsNotWellFormed(uReturn)) {
+            // TODO: also resource limit errors
             goto Done;
          }
       } while(Item.uNextNestLevel >= pItemToConsume->uNextNestLevel);
@@ -2488,12 +2487,15 @@
       uReturn = QCBORDecode_GetNext(pMe, &Item);
       if(QCBORDecode_IsNotWellFormed(uReturn)) {
          /* Got non-well-formed CBOR so map can't even be decoded. */
+         // TODO: also bail out on implementation limits like array too big
          goto Done;
       }
        
       /* See if item has one of the labels that are of interest */
       bool bMatched = false;
       for(int nIndex = 0; pItemArray[nIndex].uLabelType != QCBOR_TYPE_NONE; nIndex++) {
+         // TODO: have label filled in on invalid CBOR so error reporting
+         // can work a lot better. 
          if(MatchLabel(Item, pItemArray[nIndex])) {
             /* A label match has been found */
             if(uFoundItemBitMap & (0x01ULL << nIndex)) {
@@ -3241,7 +3243,7 @@
       {QCBOR_TYPE_INT64, QCBOR_TYPE_DOUBLE, QCBOR_TYPE_FLOAT}
    };
 
-   // TODO: this will give a unexpected type error instead of
+   // TODO: this will give an unexpected type error instead of
    // overflow error for QCBOR_TYPE_UINT64 because TagSpec
    // only has three target types.
    uErr = CheckTagRequirement(TagSpec, pItem->uDataType);
